ASP.Net验证控件默认样式

13

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

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

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

5个回答

13

您可以在CSS文件中完成此操作:

.validator
{
    color: blue !important;
}

这将覆盖行内的红色样式。


1
太好了。在IE6和FF3中都可以运行。我不能立即测试其他浏览器,但这可以帮助我进行测试。我从未想过要做重要的事情。对于任何关心的人,他上面提到的.validator类可以是任何东西 - 我的叫.error_text。 - Matt Dawdy
4
这是 ASP.NET 糟糕的一个很好的例子。由于 ASP.NET 压迫你使用 style="color: Red",所以不得不使用 !important - Deniz Dogan
12
FYI. 从 ASP.NET 4.0 开始:BaseValidator 类以及由其派生的验证控件默认不再呈现红色文本。(前提是 controlRenderingCompatibilityVersion 没有设置为“3.5”) - Chris W. Rea

9
您可以使用主题更改验证器的默认样式。
  • 在Visual Studio中右键单击网站
  • 选择“添加ASP.NET文件夹”
  • 选择“主题”,将新文件夹命名为“DefaultTheme”
  • 在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。(请注意,ASP.Net 4.0之前的版本默认会将style="Color:red"应用于所有验证器,这使得很难在CSS中覆盖其颜色。如果您发现这会影响到您,那么您可以通过在每个主题元素上设置ForeColor属性或在您的CSS规则中添加!important来覆盖它。)
参见:

这是迄今为止最好的答案! - Marco Alves

3
如果您使用主题,可以设置您的皮肤文件来控制验证器的外观。Forecolor inline 的问题在于,.Net渲染默认控件的方式会插入一个覆盖元素级别CSS的color="#..."属性。如果Keltex上面的解决方案不能通过!important指令解决您的问题,那么您下一步可能需要使用/适应/协助开发CSS-Friendly Control Adapters项目的CSS。无耻地打广告:Brian DeMarzo正在Google Code上扩展此项目。

好的建议,但链接错误(据我所知)。你是指:http://www.codeplex.com/cssfriendly吗? - CMPalmer
谢谢。我编辑了一下,因为微软已经开源了原始版本,但你的版本也不错。 - John Dunagan
使用主题会起作用;我已经多次这样做以覆盖 .NET 的默认值。(红色通常是正确的答案,但并不总是!) - John Rudy
谢谢你们的指点,伙计们。我可能会深入研究那些其他方法。 - Matt Dawdy

1

你看过主题了吗?


不行。你知道那会起作用吗,还是觉得那可能是一个好的起点? - Matt Dawdy
我认为这可能是一个起点。但是Keltex的答案看起来更简单。 - Ken Ray
谢谢Ken。Keltex的解决方案似乎有效(至少在WinXP中的FF3和IE6上)。 - Matt Dawdy

0
Set Forecolor=""

CssClass="your-css-class"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接