web-dev-qa-db-fra.com

Afficher la liste dans une vue MVC

J'essaie d'afficher la liste que j'ai créée dans ma vue, mais je continue à obtenir: "L'élément de modèle passé dans le dictionnaire est de type 'System.Collections.Generic.List1[System.String]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1 [Classements.Modèles.Équipes] '. "

Mon contrôleur:

public class HomeController : Controller
{
    Teams tm = new Teams();

    public ActionResult Index()
    {
        var model = tm.Name.ToList();

        model.Add("Manchester United");
        model.Add("Chelsea");
        model.Add("Manchester City");
        model.Add("Arsenal");
        model.Add("Liverpool");
        model.Add("Tottenham");

        return View(model);
    }

Mon modele:

public class Teams
{
    public int Position { get; set; }
    public string HomeGround {get; set;}
    public string NickName {get; set;}
    public int Founded { get; set; }

    public List<string> Name = new List<string>();
}

Mon avis:

@model IEnumerable<Standings.Models.Teams>

@{
ViewBag.Title = "Standings";
}

@foreach (var item in Model)
{
    <div>
        @item.Name
        <hr />
    </div>
}

Toute aide serait appréciée :)

10
FiF4M33sTeR

Votre méthode d'action considère le type de modèle commeList<string>. Mais, selon vous, vous attendez IEnumerable<Standings.Models.Teams>. Vous pouvez résoudre ce problème en remplaçant le modèle de votre vue par List<string>.

Mais la meilleure approche serait de retourner IEnumerable<Standings.Models.Teams> comme modèle à partir de votre méthode d'action. Ensuite, vous ne devez pas modifier le type de modèle dans votre vue.

Mais , à mon avis vos modèles ne sont pas correctement implémentés. Je vous suggère de le changer comme:

public class Team
{
    public int Position { get; set; }
    public string HomeGround {get; set;}
    public string NickName {get; set;}
    public int Founded { get; set; }
    public string Name { get; set; }
}

Ensuite, vous devez changer votre méthode d'action comme:

public ActionResult Index()
{
    var model = new List<Team>();

    model.Add(new Team { Name = "MU"});
    model.Add(new Team { Name = "Chelsea"});
    ...

    return View(model);
}

Et, votre point de vue:

@model IEnumerable<Standings.Models.Team>

@{
     ViewBag.Title = "Standings";
}

@foreach (var item in Model)
{
    <div>
        @item.Name
        <hr />
    </div>
}
21
Farhad Jabiyev

Vous passez un mauvais mode à votre vue. Votre vue recherche @model IEnumerable<Standings.Models.Teams> Et vous passez la liste de noms var model = tm.Name.ToList();. Vous devez passer la liste des équipes.

Vous devez passer le modèle suivant

var model = new List<Teams>();

model.Add(new Teams { Name =  new List<string>(){"Sky","ABC"}});
model.Add(new Teams { Name =  new List<string>(){"John","XYZ"} });
return View(model);
0
Ajay P