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

Я написал помощник 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()?

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)
Другие вопросы по тегам