我想減少代碼的使用量。我有一個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