ASP.Net验证器默认样式
我使用了Validator控件(RequiredFieldValidator,CompareValidator等)的几个变体,并使用验证程序的CssClass属性。我可以看到(通过Firebug)该类正在被应用,但验证器控件本身正在添加一个样式元素,即color:red。但我不想那样。我希望控件只能使用cssclass。ASP.Net验证器默认样式
我知道我可以覆盖Forecolor属性,但是我必须在项目中的每个验证器上都这样做。我真的希望能够在我的样式表中更改我的CSS类,以防将来改变所有的错误消息外观。
任何人有任何线索如何告诉验证控件不使用他们的默认样式?
你可以在你的CSS文件中做到这一点:
.validator
{
color: blue !important;
}
这将覆盖内嵌红色风格。
你看过主题吗?
没有。你知道这会起作用,还是你认为这可能是一个开始的好地方? – 2008-10-29 16:17:15
我认为这可能是一个开始的地方。但凯尔泰克斯的答案看起来更简单。 – 2008-10-29 16:42:58
谢谢你。 Keltex的解决方案似乎可行(至少在WinXP的FF3和IE6上)。 – 2008-10-29 18:56:05
如果您使用主题,您可以设置您的皮肤文件来控制验证器的外观。 Forecolor内联的问题在于.Net呈现默认控件的方式,它会插入一个color =“#...”属性,该属性在元素级别覆盖CSS。如果Keltex的解决方案无法为您提供!important指令,那么您的下一步可能就是使用/调整/帮助在友善控制适配器项目http://www.asp.net/CSSAdapters/上工作。
无耻插件:Brian DeMarzo正致力于在Google Code上扩展此项目。
您可以使用主题更改验证器的默认样式。
- 在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规则。)
参见:
Set Forecolor=""
而且
CssClass="your-css-class"
非常好。这在IE6和FF3中起作用。我无法立即测试其他人,但这会让我通过测试。我从来没有想过要做这件重要的事情。对于任何关心的人来说,上面提到的.validator类可以是任何东西 - 我的名字叫做.error_text – 2008-10-29 18:55:02