【问题标题】:Adding style to Editor For为编辑器添加样式
【发布时间】:2011-10-13 19:27:30
【问题描述】:
我正在尝试将样式应用于元素的编辑器,但我无法使其工作;我做错了什么?
@Html.EditorFor(model => model.ClienteNuevo)
@Html.ValidationMessageFor(model => model.ClienteNuevo,"" ,new Dictionary<string, string> { { "style", "width:500px" } })
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
asp.net-mvc-3
razor
【解决方案1】:
由于MVC 5.1,,您可以使用htmlAttributes 作为键传递自定义属性:
@Html.EditorFor(model => model.ClienteNuevo,
new { htmlAttributes = new { @class = "form-control" } })
在较旧的 MVC 版本中无法使用 EditorFor 方法添加 html 属性。
您应该创建一个自定义editor template 或使用Html.TextboxFor 而不是EditorFor。你应该检查这些主题topic1,topic2。
【解决方案2】:
您可以创建自己的 css 类并将其附加到您的编辑器中:
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "custom-editor" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
【解决方案3】:
EditorFor 调用模板视图而不是输出固定元素,因此它不将 html 属性作为参数。对于您正在做的事情,最简单的解决方法是用另一个元素包围编辑器和验证消息,然后将样式应用于该元素:
<div style="width: 500px;">
@Html.EditorFor(model => model.ClienteNuevo)
@Html.ValidationMessageFor(model => model.ClienteNuevo,"")
</div>
【解决方案4】:
EditorFor 不允许样式化,因为没有附加属性的参数。这样做的原因是因为 EditorFor 并不总是生成单个元素,因为它可以被覆盖。要为特定类型的元素设置样式,您需要使用要使用的特定编辑器。例如,如果编辑器是一个文本框,只需使用 TextBoxFor 并以这种方式应用样式。
【解决方案5】:
@Html.EditorFor(model => model.ClienteNuevo)
@Html.ValidationMessageFor(model => model.ClienteNuevo, "", new { @class = "yourclass" })
希望对你有所帮助