无法将 Bootstrap 类 应用到我的 EditorFor

unable to apply Bootstrap classes to my EditorFor

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

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

但这不会对生成的 html 产生任何影响,但如果我将 EditorFor 更改为 TextboxFor 我将获得表单控制的效果 class ?有人可以就此提出建议吗?我读到这仅在 asp.net mvc 5.1 中受支持?那么,除了将我的 asp.net mvc-5 升级到 asp.net mvc 5.1 以消除升级风险之外,我可以采用哪些可用方法来使它正常工作? 任何人都可以建议吗?

是的,要将 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 还提供了一些其他选项,包括创建用于呈现 bootstrap 控件的自定义 html 帮助程序

这个有效:

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