В реализации в стиле бритвы у меня это выглядит так:
@Html.EnumDropDownListFor(
model => model.Privilege.Role,
"-- Select role --",
new
{
@style = "width: 216px !important",
@class = "form-control",
id = "role",
required = "required"
})
И в javascript, который выполняется при загрузке, у меня есть это:
function PutDefaultPrivilegePanelListHints() {
$('#role').val('');
...
}
Существует также более гибкое решение с помощью ненавязчивой проверки (не считая HTML5):
$('.required').each(function () { $(this).rules('add', { required: true, messages: { required: '' } }) });
Конечно, есть и проверка на стороне сервера.
Я не думаю, что это хорошая идея, чтобы справиться с занятиями.
Например, все, что я показываю на странице, это какой-то класс. Этот класс имеет несколько перечислимых свойств типа. Было бы кошмаром копировать все эти свойства, но сделать их обнуляемыми в каком-то дополнительном классе, как некоторые предлагали здесь в stackoverflow.
В конце концов, почему я должен менять свою бизнес-логику ради какой-то конкретной разметки? Вместо этого я имею дело со всем через javascript и некоторые проверки моделей.