我想减少代码的使用量。我有一个string.cshtml和multiline.cshtml EditorTemplate的字符串和textareas。它们足够通用,只需使用一次即可。例如,这是我的string.cshtml(没有额外的HTML):DropDownList的Generic EditorTemplate?
@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("")
这和我的textarea差不多。我希望做的是为我的下拉列表创建一个类似的EditorTemplate。喜欢的东西:
...
@Html.DropDown("", ......)
....
我曾尝试使用代码括号中的文本框上面的变化,我已经尝试搞清楚,根据我的实际下拉列表,什么样的代码在那里去。我没有运气。
这种方式我可以使用[UIHint("TemplateName")]
或做一些像@Html.EditorFor(m => m.MyProperty, "TemplateName")
来打电话给它。
这里是我的下拉列表看起来像一个普通视图:
...
@Html.DropDownListFor
(m => m.MyProperty,
new SelectList(Model.MyPropertyList,
"Value", "Text"))
...
上面的代码工作在我的意见精细,如果没有解决方案,我就继续重新使用它。不过,我还想创建其他dropdownlists,并且希望将所有dropdownlists放入模板以供重用。我认为最好有一个dropdownlist EditorTemplate来统治它们。 ;)
谢谢大家了很好的解释。我只需将我的工作代码放在一个带有其他表单控件的模板中即可重用。这些模板已经在使用'@ Html.EditorFor()',它使用String.cshtml和MultilineText.cshtml EditorTemplates。 – REMESQ 2012-02-09 23:37:35