- PR -

CustomValidatorと他の検証コントロール

投稿者投稿内容
はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2002-12-24 16:38
一つのフォームコントロールに対して複数の検証(サーバサイドで)を行おうとしています。
たとえば、空白と偶数チェックをするとして、
空白チェックは、RequiredFieldValidator
偶数チェックは、CustomValidator
を組み込みました。ボタンコントロールでチェックされます。
それぞれ単独では機能するのですが、両方同時に組み込むと、空白チェックしか機能しません。
空白チェックをクリアすれば、偶数チェックが働きます。
これらを同時に行わせるためには、どうすればよいのでしょうか。

Visual C#.NETのデフォルト機能を使用しており、特に凝ったことはしていません。
junya_s0
常連さん
会議室デビュー日: 2002/12/23
投稿数: 26
投稿日時: 2002-12-24 17:03
> それぞれ単独では機能するのですが、両方同時に組み込むと、空白チェックしか機能しません。
> 空白チェックをクリアすれば、偶数チェックが働きます。

というのは、ポストバックするとまず空白チェックのみが行われ、エラー表示される。
そのエラーの原因を解決(空欄をなしにする)してポストバックすると偶数チェックが行われる、という意味でしょうか。

私も以前、複数のValidatorを使用した画面ではそのような動作になりました。
そのときは特に問題にならなかったので気にもしていませんでしたが。

なんとなく、CustomValidatorとほかのValidatorはValidateの発生タイミングが違うような気がするのですが・・・。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2002-12-24 18:14
再現するサンプルはないでしょうか。
(私の作ったサンプルでは、再現しない。)
はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2002-12-25 09:17
>というのは、ポストバックするとまず空白チェックのみが行われ、エラー表示される。
>そのエラーの原因を解決(空欄をなしにする)してポストバックすると偶数チェックが>行われる、という意味でしょうか。

そうです。
空白と偶数という、どう考えても同時にはありえないエラーですからムリという話ですよね。

説明が足りなかったです。すみません。
なぜ必要かというと、複数入力コントロールを配置しているからです。

Aというコントロールで空白チェックが済んだとしても、実は入力間違いがある。
が、Bというコントロールが空白なり他のチェックで引っかかるため、AのCustomエラーが表示されない。
で、Bの間違いを直したら、いままでエラー表示のなかったAで表示される。

この時間差がイヤな感じなので、直したかったのです。
実際そんなエラー入力しまくり、ということはないと思うので、問題はないと思うのですが・・・
すぎぞう
会議室デビュー日: 2002/12/04
投稿数: 1
投稿日時: 2002-12-25 10:19
ここを参考にしてみては、いかがでしょうか?
Validator7
サーバー コントロール フォームの入力検査
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2002-12-25 10:39
引用:

が、Bというコントロールが空白なり他のチェックで引っかかるため、AのCustomエラーが表示されない。
で、Bの間違いを直したら、いままでエラー表示のなかったAで表示される。


もう少し詳しい説明をお願いします。(できれば、コードで)

Bのチェックで引っかかると、何故、AのCustomエラーが表示されないのでしょうか?
rucio
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 98
投稿日時: 2002-12-25 10:52
こんにちは。
CustomValidatorはほかのValidatorコントロールと違ってサーバー側で検証を行うので、他のValidatorコントロールの検証を先に終えないと作動しないと思います。
つまりはなさんのおっしゃるような時間差は仕方ないものと考えます。

私はValidationSummaryを使ったメッセージボックスによるエラー表示を試みていたときにCustomValidatorと他の検証コントロールの違いの問題にぶつかりました。
はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2002-12-25 11:07
rucioさんのおっしゃる通りですね。
私もいろいろ考えて試しているうちに、他のValidatorはクライアント側で、Customがサーバ側ということに気づきました。(遅すぎですね)
要するに、Customもクライアント側で処理させればよいということですね。
それでやってみます。
ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)