3

我有一个要传递给视图的项目列表。我想使用显示模板呈现每个项目。但是,出了点问题,因为我没有正确渲染该字段。这是我的主要观点(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>

页面加载,但不显示实体的值。

4

2 回答 2

6
@model IEnumerable<CustomEntity>

@{
    ViewBag.Title = "Index";
}
@Html.DisplayForModel()

然后确保您的显示模板存储在~/Views/Shared/DisplayTemplates/CustomEntity.cshtml. 请注意,显示模板的位置和名称非常重要。它应该以与类型 ( ) 相同的方式调用,CustomEntity.cshtml并且应该位于其中,~/Views/Shared/DisplayTemplates或者您也可以覆盖它在~/Views/XXX/DisplayTemplates哪里XXX是呈现主视图的控制器。

于 2013-10-24T14:30:31.093 回答
0

您传入的数据Html.DisplayFor类型IEnumerable<CustomEntity>,但您的 DisplayTemplate 需要一个CustomEntity. 试试这个:

@model IEnumerable<CustomEntity>

@{
    ViewBag.Title = "Index";
}

@foreach(var customEntity in Model)
{
    @Html.DisplayFor(m => customEntity);
}
于 2013-10-24T14:30:40.457 回答