如何对所有ASP.Net验证程序进行蒙皮?

如何对所有ASP.Net验证程序进行蒙皮?,asp.net,themes,skin,Asp.net,Themes,Skin,我希望ASP.NET3.5网站中的所有验证器都具有CssClass值“error”。我最初的想法是在主题皮肤中这样做: <asp:CompareValidator runat="server" CssClass="error" /> <asp:CustomValidator runat="server" CssClass="error" /> <asp:RequiredFieldValidator runat="server" CssC

我希望ASP.NET3.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";
        }
    }
});
Sys.Application.add_init(function(sender, args)
{
    if (Page_Validators != null)
    {
        for (i = 0; i < Page_Validators.length; i++)
        {
            Page_Validators[i].className = "error";
        }
    }
});
Sys.Application.add_init(函数(发送方,参数)
{
如果(第页验证程序!=null)
{
对于(i=0;i

Net生成一个名为Page_Validators的javascript变量,它是一个验证跨度数组。这个脚本检查它是否存在,然后循环并设置类名。我将此添加到母版页及其目前的工作情况。

我不知道,当定义一个皮肤时,您专门使用单个控件,并且您没有其他方法来指定它,因为它基于使用的标记匹配


不过,从外观上看,您也在创建自己的自定义验证器,您可能会修改控件,使其具有默认的cssclass错误,以节省一些时间。

我可能会尝试在服务器pageload方法中迭代页面的控件,并在那里应用css类:

foreach (object obj in this.Controls)
{
  if (obj is BaseValidator)
  {
     ((BaseValidator)obj).CssClass = "error";
  }
}

这可能不是最好的方法,我还没有机会测试它,但希望它能帮助您。

我发现了一种使用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";
        }
    }
});
Sys.Application.add_init(function(sender, args)
{
    if (Page_Validators != null)
    {
        for (i = 0; i < Page_Validators.length; i++)
        {
            Page_Validators[i].className = "error";
        }
    }
});
Sys.Application.add_init(函数(发送方,参数)
{
如果(第页验证程序!=null)
{
对于(i=0;i

Net生成一个名为Page_Validators的javascript变量,它是一个验证跨度数组。这个脚本检查它是否存在,然后循环并设置类名。我将其添加到母版页中,并且到目前为止它仍在工作。

我刚刚找到了一个类似的解决方案,但采用了客户端代码。谢谢