Я пытаюсь сократить использование кода. У меня есть string.cshtml и multiline.cshtml EditorTemplate для строк и текстовых областей. Они достаточно универсальны, чтобы использовать их только один раз. Например, это мой string.cshtml (без постороннего HTML):
@Html.Label(ViewData.ModelMetadata.DisplayName)
@Html.TextBox("",
ViewData.TemplateInfo.FormattedModelValue,
new { placeholder = ViewData.ModelMetadata.Watermark })
@if (ViewData.ModelMetadata.IsRequired)
{
@:<span class="required"></span>
}
@Html.ValidationMessage("")
Это почти то же самое для моей текстовой области. Я надеюсь создать похожий шаблон EditorTemplate для моих выпадающих списков. Что-то вроде:
...
@Html.DropDown("", ......)
....
Я пробовал варианты, используя код в круглых скобках для текстового поля выше, и я пытался выяснить, на основе моего фактического выпадающего списка, какой код идет туда. Мне не повезло.
Таким образом, я мог бы использовать либо [UIHint("TemplateName")]
, либо сделать что-то вроде @Html.EditorFor(m => m.MyProperty, "TemplateName")
, чтобы вызвать его.
Вот как выглядит мой выпадающий список в обычном режиме:
...
@Html.DropDownListFor
(m => m.MyProperty,
new SelectList(Model.MyPropertyList,
"Value", "Text"))
...
Приведенный выше код работает отлично в моих представлениях, и если решения не будет, я просто продолжу использовать его повторно. Однако у меня есть другие выпадающие списки, которые я хочу создать, и я хочу поместить все выпадающие списки в шаблоны для повторного использования. Я думал, что было бы лучше иметь один выпадающий список EditorTemplate, чтобы управлять ими всеми. ;)