1

カスタムバリデーターには、ClientValidationFunctionおよびControlToValidateと呼ばれるプロパティがあります。関数は次のようになります。

function MyValidationFunction(source,args) {
   if(args.Value==......)
}  

ここで「ソース」がControlToValidateであることを知っています。しかし、args.Valueのタイプが何であるかを理解することはできません。それは価値として何を取りますか。controltovalidateがテキストボックスの場合、そのテキストボックスのテキストであることがわかりますが、コントロールがユーザーコントロールの場合はどうなりますか。だから私の質問は、検証する価値とは何か、そしてそれを変更できるかということです。

4

2 に答える 2

1

どうやら、クライアント側の検証にValueは、レンダリングされたHTMLコントロールのプロパティが使用されます。これは、たとえば、TextBox単純なものとしてレンダリングされる<input type="text">(そして、そのvalueプロパティにテキストボックスのコンテンツが含まれる)コントロールに意味があります。次のナレッジベースの記事によると、(カスタム)コントロールが複数のHTMLコントロールで構成されている場合、クライアント側の検証は実行できません。

注:この記事では、サーバー側の検証のみを目的としてカレンダーコントロールを拡張する方法について説明します。クライアント側の検証を行うために、検証コントロールは対応するHTMLコントロールのValueプロパティに接続します。カレンダーコントロールの作成には多くのHTMLコントロールが使用されるため、カレンダーコントロールに選択された値を含むHTMLコントロールは1つもありません。したがって、クライアント側の検証はカレンダコントロールには適していません。

ちなみに、サーバー側の検証では、ValidationProperty属性を使用して、検証に使用するプロパティを指定できます。


編集:このSOの質問によると<input type="hidden">、ユーザーコントロールの最初のコントロールとしてを出力すると、これはクライアント側の検証に使用されます。実際の制御値をそこに保存することに慣れている場合、これは便利な回避策になる可能性があります。

于 2012-04-17T05:39:16.567 に答える
1

参照:詳細なASP.NET検証

サーバー関数に渡されるパラメーターに対応する2つのパラメーターがクライアント関数に渡されます。1つ目はクライアントバリデーター要素で、2つ目はサーバー上の引数に相当します。検証する入力を含むValueと、有効性を示すために更新できるIsValidの2つのプロパティがあります。

function CheckEven(source, args) {
    var val = parseInt(args.Value, 10);
    if (isNaN(val)) {
        args.IsValid = false;
    }
    else {
        args.IsValid = ((val % 2) == 0);
    }
}

値を変更することはできません。読み取り専用です。erverValidateEventArgs.Valueプロパティ を確認し、CustomValidatorコントロールを使用する

于 2012-04-17T05:46:18.043 に答える