我想我在这里缺少一些简单的东西。
在我的控制器中我有
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的模型项;
如何更改此代码以访问模板中单个模型的属性?
谢谢!
答案 0 :(得分:3)
在代码中,在lambda内部,item
解析为所述lambda的参数,而不是外部作用域中声明的item
。只需重命名lambda的参数,它应该按预期工作:
@foreach (var item in Model)
{
@Html.DisplayFor(_ => item, "SectionTemplate")
}