方法 : ASP.NET サーバー コントロールの有効性をプログラムでテストする

更新 : 2007 年 11 月

検証コントロールは、ユーザーの入力をテストし、エラー状態を設定し、エラー メッセージを生成します。検証コントロールは、ページ処理の流れを変更しません。たとえば、ユーザーの入力エラーを検出した場合にコードをバイパスするようなことはしません。そのため、アプリケーション固有のロジックを実行する前に、コード内でコントロールの状態をチェックする必要があります。エラーを検出した場合は、独自のコードが実行されないようにします。ページは処理を続行し、ユーザーにエラー メッセージを返します。

dh9ad08f.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

既定では、ASP.NET Web ページは、悪意のあるユーザーがアプリケーションにスクリプトまたは HTML 要素を送信しようとしていないかどうかを自動的に検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。

一般的ページ全体の状態、および個別のコントロールの状態をテストできます。通常、これらのテストは、ページに対して作成するイベント ハンドラで行います。

一般的なエラー状態をテストするには

  • コードで、ページの IsValid プロパティをテストします。このプロパティは、ページ上のすべての検証コントロールの IsValid プロパティの値を論理 AND で集約したものです。いずれかの検証コントロールが無効に設定されると、ページのプロパティは false になります。

    dh9ad08f.alert_note(ja-jp,VS.90).gifメモ :

    ページの初期化段階または読み込み段階では、検証情報は使用できません。ただし、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 プロパティを検査できます。

    dh9ad08f.alert_note(ja-jp,VS.90).gifメモ :

    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 サーバー コントロールをプログラムで検証する

参照

ASP.NET Web ページにおけるユーザー入力の検証