2

ASP.NET ページを作成していて、検証を機能させようとしています。私の問題は、いくつかのカスタム グリッド コントロールを含むリピーターがあり、それぞれにバリデーターと検証概要があることです。

最初は、検証グループを割り当てませんでしたが、これにより、いずれかのグリッドにエラーが発生するたびに、すべてのグリッドに検証サマリーが表示されるようになりました (検証サマリーの検証グループが設定されていなかったため、すべての検証がキャプチャされたと思われます)。エラー)。

そのため、コントロールの特定のプロパティに関して一意の、グリッドごとに個別の検証グループを割り当てました。しかし、入力を検証する必要があるページの下部 (検証グループなし) にボタンがあります。検証グループがないため、グリッドのバリデーターが自動的に検証されないため、 を呼び出すクリック ハンドラーを追加しましたPage_ClientValidate()。サイコロはありません-検証はどこにでも表示されます。

では、検証グループを繰り返し処理し、Page_ClientValidate(validationGroup)バリデーターがあればそれぞれを呼び出します。バリデータを持つグリッドが 1 つだけの場合は問題なく動作しますが、2 つ以上のグリッドがある場合は、すべての検証サマリーが自動的に非表示になりますが、最後にチェックされたものは非表示になります。この動作を無効にする方法、またはこれを完全に行うためのより良い方法はありますか?

必要に応じて、繰り返し検証を終了したら、他の検証サマリーを表示して再表示できると思いますが (それには他の意味がある可能性があります)、バリデーターの表示も再表示する必要があります (使用しています無効なフィールドを示すイメージ)。それは、面倒で壊れやすいソリューションのように思えます。

編集:ああ、ひねり。最後に述べたアプローチを試してみました-無効な非表示のバリデーター/検証の概要を再表示します-しかし、Microsoftコードもそれを防ぎます。メソッドの最初の行(ページ内の各バリデーターでValidatorValidate(validator, validationGroup, event)呼び出される)は に設定され、パラメーターがバリデーターのものと一致する場合にのみ実行される条件内の検証関数の戻り値にのみ設定されます。結果として、非表示のバリデーターはすべて有効としてマークされ、バリデーターが実際に有効であるか、Microsoft がクライアント側の検証コードの設計に愚かであったために有効であるかを後で判断するのが難しくなります。Page_ClientValidate(validationGroup)validator.isvalidtruevalidationGroup

4

0 に答える 0