无法将Bootstrap类应用于我的EditorFor

时间:2015-01-16 01:07:04

标签: twitter-bootstrap razor asp.net-mvc-5 html-helper editorfor

我正在开发一个asp.net mvc-5 Web应用程序,我写了以下内容: -

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
&
@Html.EditorFor(model => model.Name, new { @class = "form-control"  })

但是这对生成的html没有任何影响,但如果我将EditorFor更改为T extboxFor,我将获得表单控件类的效果?有人可以就此提出建议吗?我读到这只在asp.net mvc 5.1中支持?那么除了将我的asp.net mvc-5升级到asp.net mvc 5.1以外,除了升级风险之外,我可以采用哪些方法来实现这项工作? 有人可以羡慕吗?

2 个答案:

答案 0 :(得分:4)

是的,要将html属性传递给标准EditorFor(),您需要MVC-5.1 +。如果要使用MVC-5复制它,可以创建自定义编辑器模板并使用接受additionViewData的重载传递属性。例如,创建一个名为“String.cshtml”的新EditorTemplate,以便为所有属于string

的属性应用模板

/Views/Shared/EditorTemplates/String.cshtml

@Html.TextBoxFor(m => m, ViewData["attributes"])

并在视图中

@Html.EditorFor(m => m.Name, new { attributes = new { @class = "form-control" } })

或创建特定的EditorTemplate

/Views/Shared/EditorTemplates/MyCustomTemplate.cshtml

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, ViewData["htmlAttributes"])

并在视图中

@Html.EditorFor(m => m.Name, "MyCustomTemplate", new { attributes = new { @class = "form-control" } })

第二个示例显示了如何尊重上述评论中提到的DisplayFormat属性,例如

[DisplayFormat(DataFormatString="{0:C}", ApplyFormatInEditMode = true)]
public decimal Amount { get; set; }

会将值格式化为货币字符串。

This answer还提供了一些其他选项,包括创建用于呈现引导控件的自定义html帮助器

答案 1 :(得分:2)

这有效:

@Html.EditorFor(x => x.Created, new { htmlAttributes = new { @class = "date" } })