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)