方法 : ASP.NET サーバー コントロールのデータベースの値を検証する

更新 : 2007 年 11 月

ユーザーの入力をデータベースに対して検証することにより、ユーザーが入力した内容が認識可能な値であることを確認できます。このためには、データベースを検索して、データが一致しているかどうかを確認するコードを CustomValidator コントロール内に記述する必要があります。

データベースに対して検証するには

  1. CustomValidator コントロールをページに追加し、次のプロパティを設定します。

    プロパティ

    説明

    ControlToValidate

    正当性をチェックしているコントロールの ID。

    ErrorMessage, Text, Display

    検証が不合格だった場合に表示される 1 つ以上のエラーのテキストと位置を指定するプロパティ。詳細については、「方法 : ASP.NET サーバー コントロールに対する検証エラー メッセージの表示を制御する」を参照してください。

  2. CustomValidator コントロールの ServerValidate イベントのイベント ハンドラを作成します。データベースを検索し、ユーザー入力をデータセットと比較してチェックするコードをイベント ハンドラに追加します。

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

    ユーザーがコントロールを空白のままにした場合、コントロールは比較検証に合格します。ユーザーに値の入力を促すには、RequiredFieldValidator コントロールも追加します。詳細については、「方法 : ASP.NET サーバー コントロールに必要なエントリを検証する」を参照してください。

  3. ASP.NET Web ページ コードにテストを追加して、有効性を確認します。詳細については、「方法 : ASP.NET サーバー コントロールの有効性をプログラムでテストする」を参照してください。

    データベース テーブル内を検索してユーザー入力を検証する方法を次のコード例に示します。この例では、ユーザーが入力した電子メール アドレスは、テーブルに格納された電子メール アドレスに対して検証されます。このカスタム検証ロジックでは、ページで利用できるデータセットに含まれるテーブルの行に対してループ処理を実行します。

    Private Sub CustomValidator1_ServerValidate(ByVal _
       source As System.Object, ByVal args As _
       System.Web.UI.WebControls.ServerValidateEventArgs) _
       Handles CustomValidator1.ServerValidate
    
        Dim dv As DataView
        Dim dataset11 As New Data.DataSet
    
        dv = dataset11.Tables(0).DefaultView
    
        Dim datarow As DataRowView
        Dim txtEmail As String
        args.IsValid = False    ' Assume False
        ' Loop through table and compare each record against user's entry
        For Each datarow In dv
            ' Extract e-mail address from the current row
            txtEmail = datarow.Item("Alias").ToString()
            ' Compare e-mail address against user's entry
            If txtEmail = args.Value Then
                args.IsValid = True
                Exit For
            End If
        Next
    End Sub
    
    private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
    {
        DataView dv;
        DataSet dataSet11 = new DataSet();
    
        dv = dataSet11.Tables[0].DefaultView;
        string txtEmail;
        args.IsValid = false;    // Assume False
        // Loop through table and compare each record against user's entry
        foreach (DataRowView datarow in dv)
        {
            // Extract e-mail address from the current row
            txtEmail = datarow["Alias "].ToString();
            // Compare e-mail address against user's entry
            if (txtEmail == args.Value)
            {
                args.IsValid = true;
            }
        }
    }
    

参照

概念

ASP.NET サーバー コントロールの検証の種類

その他の技術情報

検証 ASP.NET コントロール