ASP.NET MVC3 Code First Строительные леса | Представление списка не учитывает атрибут [Display (Name = "...")] - PullRequest
4 голосов
/ 15 мая 2011

Я попытался украсить класс POCO с помощью [Display(Name="First Name")] Как следует ...

    public int Id { get; set; }

    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    public string LastName { get; set; }

А также с помощью атрибута [DisplayName("First Name")].

Независимо от того, что по умолчанию "Список"«Сгенерированное представление (используя диалоговое окно« Добавить контроллер ») всегда создает таблицу с именами свойств (например,« FirstName ») в качестве текста заголовка без учета значений атрибутов.Представление создания отлично работает с атрибутом [Display(Name=...)].

Шаблон List.tt T4 на самом деле имеет:

    <th>
        <#= property.AssociationName #>
    </th>

, тогда как шаблон Create.tt имеет:

    <#
        if (property.IsForeignKey) {
    #>
            @Html.LabelFor(model => model.<#= property.Name #>, "<#= property.AssociationName #>")
    <#
        } else {
    #>
            @Html.LabelFor(model => model.<#= property.Name #>)
    <#
        }
    #>

Что еще нужно сделать, чтобы стандартные леса использовали атрибут Display?Или я должен отредактировать шаблон List.tt T4, чтобы использовать что-то кроме <# property.AssociationName #>?

Конечно, я могу редактировать сгенерированный вид.Но мне нравится «исправлять» это в самом шаблоне, чтобы ВСЕ сгенерированные представления были правильными без изменений.

Заранее спасибо за ответы.

1 Ответ

5 голосов
/ 16 мая 2011

Атрибут Display Data Annotation учитывается только методом Html.LabelFor, так как ваш List.tt только "распечатывает" конкретный AssociationName для каждого свойства, это то, что вы на самом деле получаете.

Если вы хотите, чтобы он печатал имя Display для каждого свойства, вам также нужно будет указать метод LabelFor, как в вашем Create.tt:

@Html.LabelFor(model => model.<#= property.Name #>)

Или, что еще лучше, просто скопируйте туда все это, так что случай, когда свойство является внешним ключом, также обрабатывается.

...