mvc3 - добавление CSS-класса на основе атрибутов модели - PullRequest
1 голос
/ 22 июля 2011

У меня есть такой элемент модели:

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

, и я использую EditorFor, чтобы выкачать его на страницу примерно так:

@Html.EditorFor(x => x.FirstName )

У меня естьмногие из этих элементов на странице и хотели бы добавить класс CSS в поле ввода с именем «Обязательный» в зависимости от того, имеет ли модель атрибут [Обязательный].

Добавление ...

@Html.EditorFor(x => x.FirstName, new { @class = "Required" }) )

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

Заранее спасибо

Ответы [ 3 ]

6 голосов
/ 22 июля 2011

кажется немного ручным.

и самое главное не работает. Второй аргумент помощника EditorFor не делает то, что вы думаете, в отличие от помощника TextBoxFor. Вы можете написать пользовательский поставщик метаданных , который позволит вам украсить наше свойство модели представления с помощью пользовательского атрибута и указать класс для применения в шаблоне редактора:

[Required]
[Display(Name = "First name")]
[StringLength(50)]
[HtmlProperties(CssClass = "Required")]
public string FirstName { get; set; }
4 голосов
/ 22 июля 2011

Если вам не требуется поддержка самых старых браузеров, вы также можете использовать атрибут data-val-required html, который уже автоматически добавляется в поля.В CSS это будет, например, input[type="text"][data-val-required] { border-left: 2px solid blue; }.

0 голосов
/ 22 июля 2011

Я бы предложил переопределить создание EditorTemplate: /Views/Shared/EditorTemplates/String.cshtml

Поместите это в содержимое (извините, не проверено!):

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" + (ViewData.ModelMetadata.IsRequired ? " required" : "") })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...