LabeFor не генерирует отображаемый атрибут класса - PullRequest
1 голос
/ 30 марта 2012

Новый проект MVC включает Site.css, который указывает:

/* Styles for editor and display helpers
----------------------------------------------------------*/
.display-label, 
.editor-label 
{
    font-weight: bold;
    margin: 1em 0 0 0;
}

Однако, когда я использую LabelFor(m=>m.SomeField), сгенерированный html не включает атрибут класса:

<label for="SomeField">Some Field</label>

Я видел другие примеры, когда люди используют LabelFor, и сгенерированный html действительно включает атрибут class="display-label".

Должен ли LabelFor генерировать этот атрибут класса?Если это так, то почему может быть, что мой не является?

У меня есть собственный DataAnnotationsModelMetadataProvider, но он все еще вызывает базу:

protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
    var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);

    if (metadata.DisplayName == null)
        metadata.DisplayName = propertyName.ToTitleCaseFromCamel();

    return metadata;
}

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Россис заставил меня просмотреть одну из моих страниц "Создать", чтобы проверить его утверждения. Поскольку вызовы EditorFor и DisplayFor также, по-видимому, не используют ни один из этих классов CSS в моем проекте. Я начал осматривать сгенерированный HTML-код некоторых из моих страниц создания / редактирования и нашел ответ.

Эти классы используются только в представлениях, сгенерированных с помощью опций скаффолдинга:

<div class="editor-label">
            @Html.LabelFor(model => model.MeetingDate)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.MeetingDate)
            @Html.ValidationMessageFor(model => model.MeetingDate)
        </div>

Таким образом, вы можете видеть, что сгенерированная страница явно ссылается на класс css. Он не генерируется из вызова помощника LabelFor Html. Таким образом, ссылки на классы являются результатом работы скаффолдинга, а не помощником Html.

Таким образом, я должен явно ссылаться на них в представлениях, которые я кодирую с нуля.

0 голосов
/ 30 марта 2012

Эти классы CSS существуют только при использовании шаблонов EditorFor и DisplayFor.Когда вы просто используете LabelFor, вам нужно указать свой собственный класс CSS.

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