我正在开发一个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以外,除了升级风险之外,我可以采用哪些方法来实现这项工作?
有人可以羡慕吗?
答案 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" } })