我有一个我传递给视图的项目列表。我想使用显示模板渲染每个项目。但是,有些东西是错的,因为我没有正确渲染场。 这是我的主要观点(Index.cshtml):
@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>
页面加载,但不显示实体的值。
答案 0 :(得分:6)
@model IEnumerable<CustomEntity>
@{
ViewBag.Title = "Index";
}
@Html.DisplayForModel()
然后确保您的显示模板存储在~/Views/Shared/DisplayTemplates/CustomEntity.cshtml
中。请注意,显示模板的位置和名称非常重要。它应该与类型(CustomEntity.cshtml
)一样调用,并且应该位于~/Views/Shared/DisplayTemplates
中,或者您也可以在~/Views/XXX/DisplayTemplates
中覆盖它,其中XXX
是控制器呈现主视图。
答案 1 :(得分:0)
您在Html.DisplayFor
类型IEnumerable<CustomEntity>
中传递的数据,但您的DisplayTemplate需要CustomEntity
。试试这个:
@model IEnumerable<CustomEntity>
@{
ViewBag.Title = "Index";
}
@foreach(var customEntity in Model)
{
@Html.DisplayFor(m => customEntity);
}