Подтвердить что ты не робот

ASP.NET MVC: использование редактора() с шаблоном по умолчанию для перечислений

Я написал помощник EnumDropDownFor(), который я хочу использовать в сочетании с EditorFor(). Я только начал использовать EditorFor(), поэтому немного запутался в выборе шаблона.

Мой шаблон редактора Enum.cshtml находится ниже:

<div class="editor-label">
    @Html.LabelFor(m => m)
</div>
<div class="editor-field">     
    @Html.EnumDropDownListFor(m => m)
    @Html.ValidationMessageFor(m => m)
</div>

За исключением явного определения используемого шаблона, есть ли способ иметь шаблон по умолчанию, который используется всякий раз, когда Enum передается в EditorFor()?

4b9b3361

Ответ 1

Вы можете проверить сообщение блога Brad Wilson о шаблонах по умолчанию, используемых в ASP.NET MVC. Когда у вас есть свойство модели типа Enum, это шаблон строки, который визуализируется. Поэтому вы можете настроить этот шаблон редактора строк следующим образом:

~/Views/Shared/EditorTemplates/String.cshtml:

@model object
@if (Model is Enum)
{
    <div class="editor-label">
        @Html.LabelFor(m => m)
    </div>
    <div class="editor-field">     
        @Html.EnumDropDownListFor(m => m)
        @Html.ValidationMessageFor(m => m)
    </div>
}
else
{
    @Html.TextBox(
        "",
        ViewData.TemplateInfo.FormattedModelValue,
        new { @class = "text-box single-line" }
    )
}

а затем, на ваш взгляд, просто:

@Html.EditorFor(x => x.SomeEnumProperty)