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.IEnumerable
1 [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 :)
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>
}
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);