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

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

Мое Перечисление.шаблон редактора cshtml приведен ниже:

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

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

1 ответов


вы можете проверить сообщение в блоге Брэда Уилсона о шаблоны используется в 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)