为什么添加视图列表脚手架向导不使用“DisplayName”数据注释

时间:2011-09-13 02:28:21

标签: asp.net-mvc

所以我花了很多时间用Required,StringLength,Range,Display等来注释我的域实体。

然后我进入并开始创建具有正确域实体集的强类型视图。

我尝试的第一个视图是我的域实体的List Scaffolded视图,它具有慷慨应用的Display(Name =“foo”)属性。创建视图时,表头仍然使用属性名称,而不是我设置的显示名称。

带有April Tools更新的MVC3是否会忽略这些数据注释?

1 个答案:

答案 0 :(得分:4)

假设您正在使用MvcScaffolding,那么是的,这些脚手架模板会忽略元数据。

但如果您按照this article进行操作,则可以创建自己的模板。完成后,您可以修改自己的模板。

在模板中查找此部分

<thead>
    <tr>
        <th></th>
<#
List<ModelProperty> properties = GetModelProperties(Model.ViewDataType, true);
foreach (ModelProperty property in properties) {
if (!property.IsPrimaryKey && !property.IsForeignKey && !property.IsEnumerable) {
#>
        <th><#=  property.Name #></th>
<#
}
}
#>
    </tr>
</thead>

<th><#= property.Name #></th>更改为<th>@Html.LabelFor(x => x.First().<#= property.Name #>)</th>,它将使用modelmetadata displayname。请谨慎但这只是为了快速说明如何根据索引视图的模板(具有IEnumerable&lt;&gt;作为模型)来处理它。