在MVC中向EditorFor添加类

时间:2014-12-07 08:40:46

标签: css asp.net-mvc asp.net-mvc-4

我想在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; }

1 个答案:

答案 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的扩展方法,然后不需要此EditorTemplateRefer this exampleSelected = v.Equals(Model),毫无意义,因为Selected属性将被忽略(所选项目将是DocumentType的值)