在视图 MVC 中显示列表

本文关键字:显示 列表 MVC 视图 | 更新日期: 2024-11-06 18:20:51

我正在尝试显示我在视图中创建的列表,但不断得到:"传递到字典中的模型项的类型是'System.Collections.Generic.List 1[System.String]', but this dictionary requires a model item of type '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>();
}

我的观点:

@model IEnumerable<Standings.Models.Teams>
@{
ViewBag.Title = "Standings";
}
@foreach (var item in Model)
{
    <div>
        @item.Name
        <hr />
    </div>
}

任何帮助将不胜感激:)

在视图 MVC 中显示列表

您的操作方法将模型类型视为List<string>。但是,在您看来,您正在等待IEnumerable<Standings.Models.Teams>.您可以通过将视图中的模型更改为 List<string> 来解决此问题。

但是,最好的方法是从操作方法中返回IEnumerable<Standings.Models.Teams>作为模型。然后,您不必更改视图中的模型类型。

但是 ,在我看来,您的模型没有正确实现。我建议你把它改成:

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);
}

并且,您的观点:

@model IEnumerable<Standings.Models.Team>
@{
     ViewBag.Title = "Standings";
}
@foreach (var item in Model)
{
    <div>
        @item.Name
        <hr />
    </div>
}

您正在将错误的模式传递给您的视图。您的视图正在查找@model IEnumerable<Standings.Models.Teams>并且您正在传递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);