C# 在MVC视图中显示列表
我试图显示我在视图中创建的列表,但不断得到:“传递到字典中的模型项的类型为'System.Collections.Generic.listC# 在MVC视图中显示列表,c#,asp.net-mvc,list,model-view-controller,C#,Asp.net Mvc,List,Model View Controller,我试图显示我在视图中创建的列表,但不断得到:“传递到字典中的模型项的类型为'System.Collections.Generic.list1[System.String]',但此字典需要'System.Collections.Generic.IEnumerable1[Standings.Models.Teams]'类型的模型项。” 我的控制器: public class HomeController : Controller { Teams tm = new Teams();
1[System.String]',但此字典需要'System.Collections.Generic.IEnumerable
1[Standings.Models.Teams]'类型的模型项。”
我的控制器:
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);
}
我的模型:
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>();
}
公共类团队
{
公共int位置{get;set;}
公共字符串HomeGround{get;set;}
公共字符串昵称{get;set;}
公共整数{get;set;}
公共列表名称=新列表();
}
我的看法是:
@model IEnumerable<Standings.Models.Teams>
@{
ViewBag.Title = "Standings";
}
@foreach (var item in Model)
{
<div>
@item.Name
<hr />
</div>
}
@model IEnumerable
@{
ViewBag.Title=“排名”;
}
@foreach(模型中的var项目)
{
@项目名称
}
任何帮助都将不胜感激:)您的操作方法将模型类型视为
列表。但是,在您看来,您正在等待IEnumerable
。
通过将视图中的模型更改为列表
,可以解决此问题
但是,最好的方法是从动作方法返回IEnumerable
作为模型。这样就不必在视图中更改模型类型
但是,我认为您的模型没有正确实施。我建议您将其更改为:
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; }
}
然后,您必须将您的操作方法更改为:
public ActionResult Index()
{
var model = new List<Team>();
model.Add(new Team { Name = "MU"});
model.Add(new Team { Name = "Chelsea"});
...
return View(model);
}
public ActionResult Index()
{
var模型=新列表();
添加(新团队{Name=“MU”});
model.Add(新团队{Name=“Chelsea”});
...
返回视图(模型);
}
你的看法是:
@model IEnumerable<Standings.Models.Team>
@{
ViewBag.Title = "Standings";
}
@foreach (var item in Model)
{
<div>
@item.Name
<hr />
</div>
}
@model IEnumerable
@{
ViewBag.Title=“排名”;
}
@foreach(模型中的var项目)
{
@项目名称
}
您向视图传递了错误的模式。您的视图正在查找@model IEnumerable
,您正在传递var model=tm.Name.ToList()代码>姓名列表。您必须通过团队列表
你必须通过以下模型
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);
var模型=新列表();
添加(新团队{Name=newlist(){“Sky”,“ABC”});
Add(新团队{Name=newlist(){“John”,“XYZ”});
返回视图(模型);
您想传递一组球队还是一组球队名称(您要传递的是哪一组)?为什么足球队对象的名称为球队
(复数)以及为什么一个球队有多个名称?我想你需要仔细看看你的模型!试试下面我的答案。您的模型没有正确实现。它需要是model.Add(new Team(){Name=new List(){“曼联”})代码>(Name
是一个集合)@StephenMuecke OP的模型有点过时。谢谢,我已经更新了。OP模型毫无意义:)我想名称
应该是字符串
而不是列表
@StephenMuecke完全同意,所以我更新了我的答案。谢谢@StephenMuecke