为编辑器添加样式

时间:2011-10-13 19:27:31

标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor

我正在尝试将一个样式应用于编辑器中的元素,但我无法使其工作;我做错了什么?

@Html.EditorFor(model => model.ClienteNuevo)
@Html.ValidationMessageFor(model => model.ClienteNuevo,"" ,new Dictionary<string,     string> { { "style", "width:500px" } })

5 个答案:

答案 0 :(得分:11)

MVC 5.1,以来,您可以使用htmlAttributes作为密钥传递自定义属性:

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

在较旧的MVC版本中,无法使用EditorFor方法添加html属性。
您应该创建自定义editor template或使用Html.TextboxFor而不是EditorFor。您应该查看以下主题topic1topic2

答案 1 :(得分:6)

您可以创建自己的css类并将其附加到编辑器中:

 Picasso.with(this).load("url").fetch();

答案 2 :(得分:2)

EditorFor调用模板视图而不是输出固定元素,因此它不会将html属性作为参数。对于你正在做的事情,最简单的解决方法是用另一个元素包围编辑器和验证消息,然后将样式应用于:

<div style="width: 500px;">
@Html.EditorFor(model => model.ClienteNuevo)
@Html.ValidationMessageFor(model => model.ClienteNuevo,"")
</div>

答案 3 :(得分:2)

EditorFor不允许样式化,因为没有其他属性的参数。原因是因为EditorFor并不总是生成单个元素,因为它可以被覆盖。要设置特定类型元素的样式,您需要使用要使用的特定编辑器。例如,如果编辑器是文本框,只需使用TextBoxFor并以这种方式应用样式。

答案 4 :(得分:0)

@Html.EditorFor(model => model.ClienteNuevo)
@Html.ValidationMessageFor(model => model.ClienteNuevo, "", new { @class = "yourclass" })

我希望你能帮忙