代码之家  ›  专栏  ›  技术社区  ›  jrummell

如何设置所有ASP.NET验证程序的外观?

  •  2
  • jrummell  · 技术社区  · 16 年前

    我希望ASP.NET 3.5网站中的所有验证程序的cssclass值都为“错误”。我最初的想法是在这样一个主题皮肤中这样做:

    <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变量,它是一个验证范围数组。这个脚本检查它是否存在,然后循环并设置类名。我把它添加到了主页面上,到目前为止它还在工作。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Mitchel Sellers    16 年前

    我不知道,当定义一个皮肤时,您是专门使用单个控件的,并且您没有任何其他方式来指定它,因为它根据使用的标记匹配。

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

        2
  •  1
  •   Lazarus    16 年前

    我将尝试在server pageload方法中迭代页面的控件,并在其中应用css类:

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

    这可能不是最好的方法,我也没有机会测试它,但希望它可以帮助你一路前进。

        3
  •  1
  •   jrummell    16 年前

    我发现了一种使用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变量,它是一个验证范围数组。这个脚本检查它是否存在,然后循环并设置类名。我把它添加到了主页面上,到目前为止它还在工作。

    推荐文章