我想在EditorFor中显示Enum
。我使用编辑模板来显示它。(DropDownList)。
我认为麦芽EditorFor
。我想为某些控件设置类。
@Html.EditorFor(m => m.Position, new { @class = "smallinput", style = "width:150px !important" })
@Html.EditorFor(m => m.DocumentType)
在编辑器中:Views / Shared / DisplayTemplates / Enum.cshtml
@model Enum
@{
var values = Enum.GetValues(ViewData.ModelMetadata.ModelType).Cast<object>()
.Select(v => new SelectListItem
{
Selected = v.Equals(Model),
Text = v.GetDisplayName(),
Value = v.ToString()
});
}
@Html.DropDownList("", values)
在模型中
[DisplayName("نوع سند")]
[UIHint("Enum")]
public DocumentType DocumentType { get; set; }
答案 0 :(得分:6)
您可以使用EditorTemplate
将类名传递给AdditionalViewData
。
在主视图中
@Html.EditorFor(m => m.DocumentType, new { htmlAttributes = new { @class = "myclass" } })
和EditorTemplate
....
@Html.DropDownListFor(m => m, values, ViewData["htmlAttributes"])
然而,在SelectList
中包含EditorTemplate
的逻辑并不是一种好习惯。我建议您考虑创建一个用于生成SelectList
的扩展方法,然后不需要此EditorTemplate
。 Refer this example。 Selected = v.Equals(Model),
毫无意义,因为Selected
属性将被忽略(所选项目将是DocumentType
的值)