|
.NET TIPS [ASP.NET]検証コントロールで条件付きの検証処理を行うには?山田 祥寛2004/12/03 |
![]() |
|
|
|
通常、検証コントロールはあらかじめ必要なパラメータ(プロパティ値)を設定しておくだけで、ほとんどコードを記述することなくユーザー入力を検証することができる。ASP.NETの検証コントロールの詳しい使い方については、別稿「Visual Studio.NETでプログラム・レス開発を学ぶ(前編)」などを併せて参照するとよいだろう。
しかし、検証コントロールのパラメータが必ずしも実行前に決まるとは限らない。例えば以下は、配送サービスを提供するサイトなどでよく見掛けるような「配送希望時刻」の指定画面だ。
![]() |
| 配達希望時刻を指定する画面のサンプル |
このようなフォームにおいて、「配達希望時刻」は「配達時刻指定」のチェックボックスが有効である場合にのみ必須とすべき「条件付き」必須項目だ。このように、ほかの入力項目の値によってチェックの内容が変動することはよくあるケースだが、こうした「条件付き検証」の機能は、現時点の検証コントロールでは標準では提供されていない。
そこで本稿では、上のようなフォームで「条件付き検証」を実現するコードの記述方法を紹介する。まず、この機能を実装したサンプル・プログラムを示す。
|
|
| 条件付き検証を行うための.aspxファイル(C#の場合) |
|
|
| 条件付き検証を行うための.aspxファイル(VB.NETの場合) |
上記のコードでポイントとなるのは、chk_CheckedChangedメソッドに記述された、検証コントロールのEnabledプロパティの切り替えだ。チェックボックスの定義ではAutoPostBackプロパティをTrueに設定しているため、チェックボックスが変更されたときに、このメソッドが実行される。
このメソッドでは、チェックボックスが有効であるかどうかによって、対応する検証コントロールの有効/無効を切り替えればよい。これによって、「配達時間を指定する」にチェックが入っている場合にのみ、「配達時間」を有効にすることができる。
以下は、上記のコードの実行結果だ。
![]() |
| 条件付き検証コントロールを実行したところ |
| 「配達時刻指定」にチェックを付けており、かつ、「配達希望時刻」が未入力の場合はエラーとなる。 |
ただし、AutoPostBackプロパティを有効にしたコントロールでは、その内容が変更されるたびにクライアント/サーバ間の通信が発生するため、処理上のオーバーヘッドが大きい。こうした条件付き検証項目があまりに多い場合には、Enabledプロパティの切り替えを(変更イベントではなく)[登録]ボタンなどのクリック・イベントのタイミングで行うようにするのが好ましい。その方法については、「[ASP.NET]検証コントロールのパラメータを動的に設定するには?」で紹介している。![]()
| カテゴリ:Webフォーム 処理対象:検証 使用ライブラリ:RequiredFieldValidatorコントロール 使用ライブラリ:CheckBoxコントロール 関連TIPS:[ASP.NET]検証コントロールのパラメータを動的に設定するには? |
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




