說實話,我不知道該怎麼稱呼它或如何開始搜索它。ASP.NET MVC 3部分視圖模板
我有一個標準佈局的顯示頁面。
<div>
<label for="field">Field Name:</label>
@Model.Field
</div>
雖然試圖使這個更友好的更改,我想要一個模板,而不是用上面的代碼輸入每個字段。
我創建具有以下的部分視圖:
@model System.Object
<div>
@Html.LabelFor(m => m)
@Html.DisplayFor(m => m)
</div>
在我的視圖,添加以下:
@Html.Partial("_BillField", Model.Field)
然後,該模型具有與像的描述:
public ModelName {
[Display(Name="Field Description")]
public decimal Field { get; set; }
}
這適用於主視圖,但標籤在使用模板時缺失。我錯過了什麼?
更新: Per @ K。鮑勃我做出改變局部視圖:
<div>
@Html.LabelFor(m => m)
@Html.DisplayFor(m => m)
</div>
更新2:對於我想要的清晰度。
最後,我希望能夠做到:
@Html.Partial("_BillField", Model.Field1)
@Html.Partial("_BillField", Model.Field2)
@Html.Partial("_BillField", Model.Field3)
而且具有相當於:
<div>
<label for="field1">Field 1 Name:</label>
@Model.Field1
</div>
<div>
<label for="field2">Field 2 Name:</label>
@Model.Field2
</div>
<div>
<label for="field3">Field 3 Name:</label>
@Model.Field3
</div>
對不起,不使該清晰。
注意,參數'LabelFor'等人不是'Func',但一個'表達'。這是因爲它可以通過反射來訪問模型成員(也就是它的值,類型,名稱和屬性,例如'DisplayName')。當您將模型成員直接傳遞給partial時,您將更改該表達式,因此它不能再訪問成員,並且只能訪問成員的類型和值,因爲它缺少模型的上下文。 –
jpaugh
您可能想要的是一個自定義模型聯編程序或模型聯編程序模板,儘管我沒有這些經驗。 – jpaugh