Я создал HtmlHelper для перечислений - и настроил шаблон строки по умолчанию для использования этого помощника, если типом модели является перечисление.
Это означает, что я могу просто перейти @Html.EnumDropDownListFor( x => x.PersonType )
, и он будет отображатьвыпадающий список с опциями перечисления.
Я скопировал помощника из этого блога и добавил следующее в шаблон строки в \ Shared \ EditorTemplates \ String.cshtml
@model object
@if (Model is Enum)
{
@Html.EnumDropDownListFor(x => x)
}
else
{
@Html.TextBoxFor(x => x)
}
Это означает, что я получу выпадающий список для любого перечисления, не беспокоясь об изменении модели представления.
Помощник не устанавливает значения поля выбора в базовое число, ноэто все еще связывает с параметрами действия хорошо.Вы должны иметь возможность довольно легко редактировать помощника, имея достаточно простой номер в раскрывающемся списке.