我希望ASP.Net 3.5网站中的所有验证器都具有CssClass值“error”。我最初的想法是在这样的主题皮肤中这样做:
<asp:CompareValidator runat="server"
CssClass="error" />
<asp:CustomValidator runat="server"
CssClass="error" />
<asp:RequiredFieldValidator runat="server"
CssClass="error" />
<belCommon:ZipCodeValidator runat="server"
CssClass="error" />
<belCommon:PhoneNumberValidator runat="server"
CssClass="error" />
这只是我使用的验证器的部分列表。理想情况下,我想做这样的事情:
<asp:BaseValidator runat="server"
CssClass="error" />
因为所有验证器都继承自BaseValidator,我希望这会起作用,但事实并非如此。有没有办法实现这一点,而不是明确地向皮肤添加每个验证器控件?
更新
我发现了一种使用javascript的不同方法:
Sys.Application.add_init(function(sender, args)
{
if (Page_Validators != null)
{
for (i = 0; i < Page_Validators.length; i++)
{
Page_Validators[i].className = "error";
}
}
});
ASP.Net生成一个名为Page_Validators的javascript变量,它是验证范围的数组。此脚本检查它是否存在,然后循环并设置类名。我将此添加到母版页及其工作目前。
答案 0 :(得分:3)
我不知道,在定义皮肤时,您专门使用单个控件,并且无法以任何其他方式指定它,因为它根据使用的标记进行匹配。
从它的外观来看,你也在创建自己的自定义验证器,你可以修改你的控件以获得一个默认的cssclass错误来节省一些时间。
答案 1 :(得分:1)
我很想在服务器页面加载方法中迭代页面控件并在那里应用css类:
foreach (object obj in this.Controls)
{
if (obj is BaseValidator)
{
((BaseValidator)obj).CssClass = "error";
}
}
这可能不是最好的方法,我没有机会测试它,但希望它可以帮助你。
答案 2 :(得分:1)
我发现了一种使用javascript的不同方法:
Sys.Application.add_init(function(sender, args)
{
if (Page_Validators != null)
{
for (i = 0; i < Page_Validators.length; i++)
{
Page_Validators[i].className = "error";
}
}
});
ASP.Net生成一个名为Page_Validators的javascript变量,它是验证范围的数组。此脚本检查它是否存在,然后循环并设置类名。我将此添加到母版页及其工作目前。