Поскольку я использую плагин под названием select2, мне нужно определить списки выбора в моем приложении в чистом Html (так без каких-либо помощников), например:
<select name="TopicIds" id="topDrop" multiple style="width: 700px" required>
@foreach (var top in ((List<Topic>)ViewBag.TopIds).Where(top => top.MainTopic == null))
{
<option value="@top.TopicId" class="optionGroup">@top.Name</option>
foreach (var subTopic in top.SubTopics)
{
<option value="@subTopic.TopicId" class="optionChild">@subTopic.Name</option>
}
}
</select>
Как вы видите, нужно выбрать один элемент, поэтому я установил атрибут "required".
Проверка выполняется, когда форма отправляется, она не проходит, когда в списке ничего не выбрано. Я хотел бы установить настраиваемое сообщение об ошибке, хотя при проверке поля.
Обычно вы должны использовать helper @html.ValidationMessageFor()
, но это, похоже, не работает с этим чистым элементом управления html. Вы можете видеть, что список выбора привязан к свойству "TopicIds" в моей модели ViewModel.
Я пробовал это: @Html.ValidationMessageFor(model => model.TopicIds)
, единственным сообщением, которое я получаю, является значение по умолчанию "Это поле обязательно", как ни странно, только когда этот помощник определен...
Как настроить это сообщение? Я некоторое время занимался серфингом и пробовал всевозможные решения с помощью JavaScript и т.д., Но ничего не меняет сообщение, я всегда получаю "Это поле требуется".
Кто-нибудь знает, как это сделать? Я использую все это в веб-приложении ASP.NET MVC 4.
Аннотировать свойство в вашей ViewModel
[Required(ErrorMessage = "My Custom Message")]
public string Id {get;set;}
Тогда вы Html.ValidationMessageFor
<select>
проверка вообще не будет выполняться. Когда я указываю обязательный атрибут, я получаю стандарт «Это поле является обязательным атрибутом». который я не могу изменить ...