获取父的DisplayAttribute物业
问题描述:
我有一个被定义为一个视图模型如下:获取父的DisplayAttribute物业
public class VariableViewModel
{
public string TemplateName { get; set; }
public bool Enabled { get; set; }
public string Value { get; set; }
}
我使用这种模式在其他视图模式:
public class CreateViewModel
{
[Display(Name="First Name")]
public VariableViewModel FirstName { get; set; }
[Display(Name="Last Name")]
public VariableViewModel LastName { get; set; }
}
我有一个编辑模板定义VariableViewModel:
@model VariableViewModel
@Html.HiddenFor(model => model.TemplateName)
@Html.HiddenFor(model => model.Enabled)
@Html.LabelFor(model => model.Value)
@Html.TextBoxFor(model => model.Value)
我的CreateViewModel的编辑器模板:
@model CreateViewModel
@Html.EditorFor(model => model.FirstName)
@Html.EditorFor(model => model.LastName)
现在我的编辑模板创建标签如下:
<label for="FirstName">Value</label>
是否有可能修改LabelFor的方式,它看起来在父属性DisplayAttribute
以确定它应该使用什么而不是价值?我希望我的标签,看起来像:
<label for="FirstName">First Name</label>
<label for="LastName">Last Name</label>
的问题是,在显示属性是不是在我创建该标签的属性,但包含的对象上。有没有办法实现我想要的?
答
在你的编辑器模板只需使用该标签的下面:
@Html.LabelFor(model => model.Value, ViewData.ModelMetadata.DisplayName)
我们传递父显示名称作为值的标签。