说实话,我不知道该怎么称呼它或如何开始搜索它。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