2008-10-29 80 views
13

我使用了Validator控件(RequiredFieldValidator,CompareValidator等)的几个变体,并使用验证程序的CssClass属性。我可以看到(通过Firebug)该类正在被应用,但验证器控件本身正在添加一个样式元素,即color:red。但我不想那样。我希望控件只能使用cssclass。ASP.Net验证器默认样式

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

任何人有任何线索如何告诉验证控件不使用他们的默认样式?

回答

13

你可以在你的CSS文件中做到这一点:

.validator 
{ 
    color: blue !important; 
} 

这将覆盖内嵌红色风格。

+1

非常好。这在IE6和FF3中起作用。我无法立即测试其他人,但这会让我通过测试。我从来没有想过要做这件重要的事情。对于任何关心的人来说,上面提到的.validator类可以是任何东西 - 我的名字叫做.error_text – 2008-10-29 18:55:02

1

你看过主题吗?

+0

没有。你知道这会起作用,还是你认为这可能是一个开始的好地方? – 2008-10-29 16:17:15

+0

我认为这可能是一个开始的地方。但凯尔泰克斯的答案看起来更简单。 – 2008-10-29 16:42:58

+0

谢谢你。 Keltex的解决方案似乎可行(至少在WinXP的FF3和IE6上)。 – 2008-10-29 18:56:05

3

如果您使用主题,您可以设置您的皮肤文件来控制验证器的外观。 Forecolor内联的问题在于.Net呈现默认控件的方式,它会插入一个color =“#...”属性,该属性在元素级别覆盖CSS。如果Keltex的解决方案无法为您提供!important指令,那么您的下一步可能就是使用/调整/帮助在友善控制适配器项目http://www.asp.net/CSSAdapters/上工作。

无耻插件:Brian DeMarzo正致力于在Google Code上扩展此项目。

9

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

  • 在Visual Studio中右键单击该网站上
  • 选择 “添加文件夹ASP.NET”
  • 选择 “主题”,将新文件夹 “DefaultTheme”
  • 创建一个名为“控制。皮肤”,在DefaultTheme文件夹

添加以下到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规则。)

参见:

0
Set Forecolor="" 

而且

CssClass="your-css-class"