我有一個項目列表,我傳遞給一個視圖。我想要使用顯示模板呈現每個項目。然而,有些事情是錯誤的,因爲我沒有正確渲染該領域。 這裏是我的主視圖(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'循環。這一切都按照慣例運作。 –