2012-02-07 6 views
0

У меня есть вид модели, которая определяется следующим образом:Получить 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 родительского имущества, чтобы определить, что он должен использовать вместо того, чтобы иметь значение Value? Я хочу, чтобы мои метки выглядеть следующим образом:

<label for="FirstName">First Name</label> 
<label for="LastName">Last Name</label> 

Проблема заключается в том, что атрибут Display не на свойстве я создаю ярлык для, но и на содержание объекта. Есть ли способ выполнить то, что я хочу?

ответ

5

В шаблоне редактора просто используйте следующий за ярлыком:

@Html.LabelFor(model => model.Value, ViewData.ModelMetadata.DisplayName) 

Мы передаем отображаемое имя родителя в качестве значения для метки.

Смежные вопросы