【问题标题】:ASP.Net Validator Default StyleASP.Net 验证器默认样式
【发布时间】:2010-09-19 19:57:09
【问题描述】:

我正在使用验证器控件的多个变体(RequiredFieldValidator、CompareValidator 等),并且正在使用验证器的 CssClass 属性。我可以看到(通过 Firebug)正在应用该类,但验证器控件本身正在向它添加一个样式元素,即颜色:红色。但我不想那样。我希望控件只使用 cssclass。

我知道我可以覆盖 Forecolor 属性,但我必须在项目中的每个验证器上都这样做。而且我真的很希望能够在我的样式表中更改我的 CSS 类,以防我们将来必须更改所有错误消息的外观。

有人知道如何告诉验证器控件不使用它们的默认样式吗?

【问题讨论】:

    标签: asp.net validation


    【解决方案1】:

    你看过主题吗?

    【讨论】:

    • 不。您知道这会奏效吗,或者您认为这可能是一个不错的起点?
    • 我认为这可能是一个起点。但来自 Keltex 的答案看起来更简单。
    • 谢谢肯。 Keltex 的解决方案似乎有效(至少在 WinXP 中的 FF3 和 IE6 上)。
    【解决方案2】:

    您可以在您的 css 文件中执行此操作:

    .validator
    {
        color: blue !important;
    }
    

    这将覆盖内联红色样式。

    【讨论】:

    • 优秀。这适用于 IE6 和 FF3。我不能立即测试其他人,但这会让我通过测试。我从没想过要做!重要的事情。对于任何关心的人,他上面提到的 .validator 类可以是任何东西——我的叫做 .error_text
    • 这是 ASP.NET 糟糕的一个很好的例子。仅仅因为 ASP.NET 将style="color: Red" 推送给您,就使用!important
    • 仅供参考。从 ASP.NET 4.0 开始:BaseValidator 类和派生自它的验证控件默认不再呈现红色文本。(前提是 controlRenderingCompatibilityVersion 未设置为“3.5”)
    【解决方案3】:

    如果您使用主题,您可以设置皮肤文件来控制验证器的外观。 Forecolor 内联的问题在于 .Net 呈现默认控件的方式,它插入了一个 color="#..." 属性,该属性在元素级别覆盖了 CSS。如果上面的 Keltex 的解决方案无法通过 !important 指令为您解决问题,那么您的下一步可能是使用/adapt/help 在http://www.asp.net/CSSAdapters/ 的 CSS-Friendly Control Adapters 项目上工作。

    无耻插件:Brian DeMarzo 正在 Google Code 上扩展这个项目。

    【讨论】:

    • 好建议,但链接错误(据我所知)。您的意思是:codeplex.com/cssfriendly
    • 谢谢。已编辑,因为我指的是微软开源(!)它之后的原始版本,但你的也很好。
    • 使用主题会起作用;我已经多次这样做以覆盖 .NET 的默认值。 (红色通常是正确的答案,但并非总是如此!)
    • 谢谢大家的指点。我可能会深入研究其他方法。
    【解决方案4】:

    您可以使用主题更改验证器的默认样式。

    • 在 Visual Studio 中右键单击网站
    • 选择“添加 ASP.NET 文件夹”
    • 选择“主题”,将新文件夹命名为“默认主题”
    • 在 DefaultTheme 文件夹中创建一个名为“Controls.skin”的文件

    将以下内容添加到 Controls.skin 文件中:

    <asp:RequiredFieldValidator runat="server" CssClass="validation-error" />
    <asp:RangeValidator runat="server" CssClass="validation-error" />
    <asp:CompareValidator runat="server" CssClass="validation-error" />
    <asp:RegularExpressionValidator runat="server" CssClass="validation-error" />
    <asp:CustomValidator runat="server" CssClass="validation-error" />
    <asp:ValidationSummary runat="server" CssClass="validation-error" />
    

    将以下内容合并到您的web.config

    <configuration>
        <system.web>
            <pages theme="DefaultTheme" />
        </system.web>
    </configuration>
    

    然后,您可以在 CSS 文件中为 .validation-error 设置所需的任何颜色。

    (请注意,4.0 之前的 ASP.Net 版本默认将 style="Color:red" 应用于所有验证器,因此很难在 CSS 中覆盖它们的颜色。如果您发现这对您有影响,那么您可以通过设置来覆盖它上面每个主题元素上的 ForeColor 属性,或将 !important 添加到您的 CSS 规则中。)

    见:

    【讨论】:

    • 这是迄今为止最好的答案!
    【解决方案5】:
    Set Forecolor=""
    

    还有

    CssClass="your-css-class"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多