Убедитесь, что этот раскрывающийся список находится внутри формы. Чтобы проверка на стороне клиента работала, вам нужен контекст формы, иначе Html-помощники не будут выдавать какие-либо атрибуты данных HTML5- *:
@using (Html.BeginForm())
{
@Html.LabelFor(xModels => xModels.SelectedChannelID)
@Html.DropDownListFor(
x => x.SelectedChannelID,
Model.ChannelSelectList,
"--Select Channel--",
new Dictionary<string, object> { { "id", "ChannelsDDL" } }
)
@Html.ValidationMessageFor(xModels => xModels.SelectedChannelID)
<button type="submit">OK</button>
}
и если это не внутри формы (например, этот раскрывающийся список находится внутри частичного, а соответствующая форма находится вне этого частичного), вы можете вручную смоделировать контекст формы, чтобы помощники сгенерировали необходимые атрибуты:
@{
ViewContext.FormContext = new FormContext();
}
@Html.LabelFor(xModels => xModels.SelectedChannelID)
@Html.DropDownListFor(
x => x.SelectedChannelID,
Model.ChannelSelectList,
"--Select Channel--",
new Dictionary<string, object> { { "id", "ChannelsDDL" } }
)
@Html.ValidationMessageFor(xModels => xModels.SelectedChannelID)
Посмотрите на исходный код сгенерированной страницы. Убедитесь, что тег <select>
украшен такими атрибутами HTML5 data- *:
<select data-val="true" data-val-number="The field Channel: must be a number." data-val-required=" Channel is required" id="ChannelsDDL" name="SelectedChannelID">
...
</select>
Если атрибуты data- * отсутствуют, проверка на стороне клиента не будет работать.
Проверка на стороне сервера, конечно, будет работать во всех случаях.