Как добавить элемент по умолчанию в EnumDropDownList в MVC?
Я новичок в MVC, и у меня возникли проблемы с чем-то, что было бы для меня несложно в веб-формах. Итак, у меня есть выпадающий список отделов, и отделы перечислены в перечислении. Итак, выпадающий список на мой взгляд выглядит так:
<div class="form-group">
@Html.LabelFor(model => model.Department, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.Department, "Select a Department", htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Department, "", new { @class = "text-danger" })
</div>
</div>
Добавление текста "Выбрать отдел" включает этот параметр в раскрывающийся список, но при загрузке страницы вместо выбора этого параметра выбирается первый отдел в перечислении. Как сделать так, чтобы при загрузке страницы была выбрана опция "по умолчанию"?
Я уверен, что мой следующий вопрос будет состоять в том, как проверить, что выбран какой-то другой элемент (т. Е. Требуется проверка поля).
Спасибо!
2 ответа
Ваше свойство модели, вероятно, не Nullable
, Это означает, что он всегда будет инициализирован первым значением перечисления.
Если ваше свойство модели выглядит так:
public MyEnum { get; set; }
Измените это на это:
[Required] //Require one of the values is selected i.e. value is not null
public Nullable<MyEnum> { get; set; }
Это очень общая проблема, связанная с требованием, чтобы типы значений имели набор значений. Простой способ сделать это Nullable
и проверьте, что это не ноль. В противном случае тип значения будет просто иметь значение по умолчанию.
Этот ответ показывает, как выполнить выбранное значение и проверку: Html.EnumDropdownListFor: отображение текста по умолчанию
С проверкой в MVC вы обычно делаете это с атрибутом в модели, например [Required]