方法 : ASP.NET サーバー コントロールの有効性をプログラムでテストする
更新 : 2007 年 11 月
検証コントロールは、ユーザーの入力をテストし、エラー状態を設定し、エラー メッセージを生成します。検証コントロールは、ページ処理の流れを変更しません。たとえば、ユーザーの入力エラーを検出した場合にコードをバイパスするようなことはしません。そのため、アプリケーション固有のロジックを実行する前に、コード内でコントロールの状態をチェックする必要があります。エラーを検出した場合は、独自のコードが実行されないようにします。ページは処理を続行し、ユーザーにエラー メッセージを返します。
セキュリティに関するメモ : |
---|
既定では、ASP.NET Web ページは、悪意のあるユーザーがアプリケーションにスクリプトまたは HTML 要素を送信しようとしていないかどうかを自動的に検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。 |
一般的ページ全体の状態、および個別のコントロールの状態をテストできます。通常、これらのテストは、ページに対して作成するイベント ハンドラで行います。
一般的なエラー状態をテストするには
コードで、ページの IsValid プロパティをテストします。このプロパティは、ページ上のすべての検証コントロールの IsValid プロパティの値を論理 AND で集約したものです。いずれかの検証コントロールが無効に設定されると、ページのプロパティは false になります。
メモ : ページの初期化段階または読み込み段階では、検証情報は使用できません。ただし、Page_Load 時に手動で Validate メソッドを呼び出して、その後ページの IsValid プロパティをテストできます。ページの状態の詳細については、「ASP.NET ページのライフ サイクルの概要」を参照してください。
ボタンのイベント ハンドラを次のコード例に示します。コードで、ページの IsValid プロパティをテストします。ページはブラウザに自動的に返され、検証コントロールが独自のエラー メッセージを表示するため、Else 句は必要ないことに注意してください。
Public Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click If Me.IsValid Then ' Perform database updates or other logic here End If End Sub
void Button1_Click(object sender, System.EventArgs e) { if (IsValid) { // Perform database updates or other logic here. } }
個別のコントロールのエラー状態をテストするには
すべての検証コントロールへの参照が格納された、ページの Validators コレクションに対してループ処理を実行します。それにより、各検証コントロールの IsValid プロパティを検査できます。
メモ : Page_Load 時にこのチェックを実行する場合は、最初に手動で Validate メソッドを呼び出す必要があります。
個々の検証コントロールの状態を取得するコード例を次に示します。
If (Me.IsPostBack) Then Me.Validate() If (Not Me.IsValid) Then Dim msg As String ' Loop through all validation controls to see which ' generated the error(s). Dim oValidator As IValidator For Each oValidator In Validators If oValidator.IsValid = False Then msg = msg & "<br />" & oValidator.ErrorMessage End If Next Label1.Text = msg End If End If
if (this.IsPostBack) { this.Validate(); if (!this.IsValid) { string msg = ""; // Loop through all validation controls to see which // generated the errors. foreach (IValidator aValidator in this.Validators) { if (!aValidator.IsValid) { msg += "<br />" + aValidator.ErrorMessage; } } Label1.Text = msg; } }
参照
処理手順
方法 : ASP.NET サーバー コントロールに対する検証エラー メッセージの表示を制御する
方法 : ASP.NET サーバー コントロールをプログラムで検証する