2

ASP.Net3.5Webサイトのすべてのバリデーターに「エラー」の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変数を生成します。このスクリプトは、それが存在するかどうかを確認してから、ループしてクラス名を設定します。これをマスターページに追加し、これまでのところ機能しています。

4

3 に答える 3

3

私が知っているわけではありませんが、スキンを定義するときに、個々のコントロールを具体的に操作していて、使用されているタグに基づいて一致するため、他の方法で指定する方法がありません。

ただし、見た目からすると、独自のカスタム バリデータも作成しているため、コントロールを変更してデフォルトの cssclass の error を設定し、時間を少し節約することができます。

于 2009-04-02T15:25:34.150 に答える
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 変数を生成します。このスクリプトは、存在するかどうかを確認し、ループしてクラス名を設定します。これをマスターページに追加し、これまでのところ機能しています。

于 2009-04-08T13:09:30.497 に答える
1

サーバーの pageload メソッドでページのコントロールを反復処理し、そこに css クラスを適用したくなるでしょう。

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

これは最善の方法ではない可能性があり、テストする機会はありませんでしたが、途中で役立つことを願っています.

于 2009-04-02T15:28:59.040 に答える