Получить DisplayAttribute родительского свойства - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть модель представления, которая определяется следующим образом:

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 находится не в свойстве, для которого я создаю метку, а в содержащем объекте.Есть ли способ сделать то, что я хочу?

1 Ответ

5 голосов
/ 08 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...