迭代IEnumerable中的每个项目

时间:2016-10-11 14:14:28

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4

我想我在这里缺少一些简单的东西。

在我的控制器中我有

public ActionResult ListPage()
    {
        return View(db.Sections.OrderBy(x=>x.Order).ToList());
    }

在ListPage.cshtml上我有

@model IEnumerable<Section>
@foreach (var item in Model)
{
    @Html.DisplayFor(item => item, "SectionTemplate")
}

在Views / Shared / DisplayTemplates / SectionTemplate.cshtml中,我不知道该放什么。理想情况下,此视图看起来像

@model Section
<h1>@Model.Title</h1>

但显然更加强大。 当我这样做时,我收到一个错误:

  

传入字典的模型项的类型是&#39; System.Collections.Generic.List`1 [Section]&#39;,但是这个字典需要一个类型为&#39; Section&#39的模型项;

如何更改此代码以访问模板中单个模型的属性?

谢谢!

1 个答案:

答案 0 :(得分:3)

在代码中,在lambda内部,item解析为所述lambda的参数,而不是外部作用域中声明的item。只需重命名lambda的参数,它应该按预期工作:

@foreach (var item in Model)
{
    @Html.DisplayFor(_ => item, "SectionTemplate")
}