I'm trying to display the list I made in my view but keep getting : "The model item passed into the dictionary is of type 'System.Collections.Generic.List1[System.String]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1[Standings.Models.Teams]'."
My Controller:
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);
}
My model:
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>();
}
My view:
@model IEnumerable<Standings.Models.Teams>
@{
ViewBag.Title = "Standings";
}
@foreach (var item in Model)
{
<div>
@item.Name
<hr />
</div>
}
Any help would be appreciated :)
You are passing wrong mode to you view. Your view is looking for
@model IEnumerable<Standings.Models.Teams>
and you are passingvar model = tm.Name.ToList();
name list. You have to pass list of Teams.You have to pass following model
Your action method considers model type as
List<string>
. But, in your view you are waiting forIEnumerable<Standings.Models.Teams>
. You can solve this problem with changing the model in your view toList<string>
.But, the best approach would be to return
IEnumerable<Standings.Models.Teams>
as a model from your action method. Then you haven't to change model type in your view.But, in my opinion your models are not correctly implemented. I suggest you to change it as:
Then you must change your action method as:
And, your view: