我有一个项目列表,我传递给一个视图。我想要使用显示模板呈现每个项目。然而,有些事情是错误的,因为我没有正确渲染该领域。 这里是我的主视图(Index.cshtml):MVC剃刀显示模板
@model IEnumerable<CustomEntity>
@{
ViewBag.Title = "Index";
}
@Html.DisplayFor(m=>m)
这里是我的显示模板:
@model CustomEntity
<div>
@Html.LabelFor(m=>m.Name):
<strong>@Model.Name</strong>
@Html.LabelFor(m=>m.Icon):
<strong>@Model.Icon</strong>
@Html.LabelFor(m=>m.TypeName):
<strong>@Model.TypeName</strong>
</div>
该页面加载,但不显示实体的值。
是不是会搜索一个以'IEnumerable'为模型而不是'CustomEntity'的DisplayTemplate? –
谢谢达林!我错过了我的显示模板的正确名称。它被称为实体而不是CustomEntity。一旦我改变了名字,它就起作用了。你能告诉我@ Html.DisplayForModel()和@ Html.DisplayFor(m => m)之间的区别吗? – laconicdev
@RédaMattar,不,当你将一个'IEnumerable'作为一个属性传递给一个显示或编辑器模板时,它会查找一个名为'TModel.cshtml'的模板,它会自动为这个集合的每个元素调用它,不需要在代码中编写任何'foreach'循环。这一切都按照惯例运作。 –