В настоящее время я пытаюсь объединить функции Html Helper DropDownListFor
и ValidationMessageFor
. Я использую asp.Net MVC 5 и сгенерировал модель. Моя цель - иметь HTML-поле выбора, которое генерируется функцией DropDownListFor
. Это должно быть связано с моей моделью. Предполагается, что клиент вводит что-то в поле во внешнем интерфейсе в поле выбора. Если клиент ничего не вводит и нажимает кнопку отправки в моей форме, следует использовать функцию ValidationMessageFor
, чтобы отобразить текст ошибки, который я ввел в модель. Конечно, форма не должна быть действительной, и клиенту нельзя разрешать продолжать, пока в поле выбора ничего не выбрано. Это теория.
Как уже упоминалось, я создал модель. Это выглядит так:
public class ExampleModel
{
[Required(ErrorMessage="Test-Error-Text")]
public string salutation { get; set; }
}
Я устанавливаю значения в поле выбора в контроллере следующим образом:
var collection = new ListItemCollection();
collection.Add(new ListItem("Mr"));
collection.Add(new ListItem("Mrs"));
collection.Add(new ListItem("unknown"));
collection.Add(new ListItem("company"));
var selList = new SelectList(collection, "Salutation");
ViewBag.Salutation = selList;
Затем я вызываю функции в представлении следующим образом:
@Html.DropDownListFor(Model=> Model.salutation, ViewBag.Salutation as SelectList, "", new { @class="adrInput form-control"})
@Html.ValidationMessageFor(Model=>Model.salutation)
Поскольку это в настоящее время, я получаю следующее исключение при отправке:
System.InvalidOperationException: 'There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'salutation'.'
Я почти никогда не работал с этими функциями Html Helper. Что-то здесь не так. Я благодарен за любую помощь.