【问题标题】:MVC 3 override validation message cssMVC 3 覆盖验证消息 css
【发布时间】:2012-02-02 18:24:39
【问题描述】:

我正在尝试覆盖验证器的默认验证 css 类,即“field-validation-error”类

所以,如果我在我的表单上为输入写一条验证消息,如下所示:

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

那么 MVC 运行时默认设置消息跨度的类如下:

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

我的问题是,如何删除 css 类“field-validation-error”并将其替换为另一个类(我的版本),我将仅在我的应用程序的某些区域使用它。

【问题讨论】:

    标签: css asp.net-mvc validation


    【解决方案1】:

    好的...所以我通过在根 css 文件中将基本“field-validation-error”类设置为“form .field-validation-error”来让它工作...这意味着这个类将具有生成 Html 时的最高优先级,然后在我的视图中包含新的 css 类,如下所述:

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

    这将生成以下标记:

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

    如您所见,NewCssClass 将覆盖“field-validation-error”类中指定的默认验证样式...

    干杯...

    【讨论】:

    • 我们是否遗漏了那里的第二个参数?如果我错了,请纠正我。
    【解决方案2】:

    编辑,你是对的,我没有通过 MVC 源阅读那么远 - 只是阅读扩展方法源。结果是those fields are static readonly 没有可更改的选项。

    因此,您只能选择以下两种选择之一:

    1. 处理使用设置的类名。
    2. 编写您自己的扩展方法(或者更简单,来自 MVC 源代码的 just copy them 并重命名它们)。

    【讨论】:

    • 感谢回复,问题是 HtmlHelper.ValidationInputCssClassName 是只读字段,无法从您的视图中设置???...
    • 阅读更多来源并修正了我的答案。虽然不太理想。
    • 我喜欢选项 C:不要使用 MVC 验证!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2018-01-28
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多