Как добавить элемент по умолчанию в 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]

Другие вопросы по тегам