C# 在MVC视图中显示列表

C# 在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();

我试图显示我在视图中创建的列表,但不断得到:“传递到字典中的模型项的类型为'System.Collections.Generic.list
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