2009-04-02 7 views
2

ASP.Net 3.5 WebサイトのすべてのバリデータにCssClass値 "error"を設定します。私の最初の考えは、次のようなテーマスキンでこれを行うことでした:すべてのASP.Netバリデータをスキップする方法は?

<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から継承するため、私はこれがうまくいくことを期待するだろうが、それはしません。理想的には、私はこのような何かをしたいと思います。すべての単一のバリデータコントロールを明示的にスキンに追加することなくこれを達成する方法はありますか?

更新:

Iは、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変数を生成します。このスクリプトは、それが存在するかどうかをチェックし、ループスルーしてクラス名を設定します。これをマスターページとこれまでの作業に加えました。

答えて

1

Iは、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

スキンを定義するときは、個々のコントロールを個別に操作していて、使用するタグに基づいて一致させるため、別の方法を指定する方法はありません。

独自のカスタムバリデータも作成していますが、コントロールを変更して、デフォルトのcssclassエラーにして、少し時間を節約することもできます。

+0

私はそれを恐れていました、ありがとう! – jrummell

1

私は、サーバーのpageload方法でページのコントロールを反復処理するために、そこにCSSクラスに適用するために誘惑されるだろう:

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

これは、私は」これを行うための最善の方法ではないかもしれないがそれをテストする機会はありませんでしたが、うまくいけば道に沿ってあなたを助けるかもしれません。

+0

私はちょうど同様の解決策に到着しましたが、クライアント側のコードです。ありがとう! – jrummell

関連する問題