2012-01-04 81 views
1

我试图覆盖为验证默认验证CSS类,这是“现场验证错误”类MVC 3覆盖验证消息的CSS

所以,如果我写了一个输入验证消息我的窗体上如下:

@Html.ValidationMessageFor(m=>m.Name) 

然后MVC运行在默认情况下,如下设置类的消息跨度:

<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Name"> 

我的问题是,我怎么能删除的CSS类“现场valida重刑 - 错误“,并将其替换为另一个类(我的版本),我将在我的应用程序的某些区域使用它。

回答

3

好的...所以我通过在根css文件中将基础“field-validation-error”类设置为“form.field-validation-error”来实现它......这意味着这个类

@Html.ValidationMessageFor(m=>m.Name, new { @class ="NewCssClass"}) 

,这将产生以下标记:

<span class="field-validation-error NewCssClass" data-valmsg-replace="true" data-valmsg-for="Name"> 

正如你可以看到下面所提到时生成的HTML,然后在我看来,我包括新的CSS类将具有最高优先级NewCssClass将覆盖默认的验证st YLE在“现场验证错误”类中指定...

干杯......

+2

我们错过了第二个参数吗?如果我错了,请纠正我。 – Naresh 2013-10-25 13:10:13

0

编辑,你是对的,我没有阅读那么远的MVC源代码 - 只要阅读扩展方法源。变为those fields are static readonly,无法更改。

所以,你不得不拥有两个选择:

  1. 处理使用集类名。
  2. 编写您自己的扩展方法(或更简单,从MVC源代码中选择just copy them并重命名它们)。
+0

感谢您的答复,事情是HtmlHelper.ValidationInputCssClassName是一个只读字段,不能从您的视图设置? ?... – NiK 2012-01-04 21:49:41

+0

了解更多信息并修复了我的答案。虽然不太理想。 – Leniency 2012-01-04 22:22:37

+0

我喜欢选项C:不要使用MVC验证! – Roger 2012-07-07 18:21:13