方法 : ASP.NET サーバー コントロールのデータベースの値を検証する
更新 : 2007 年 11 月
ユーザーの入力をデータベースに対して検証することにより、ユーザーが入力した内容が認識可能な値であることを確認できます。このためには、データベースを検索して、データが一致しているかどうかを確認するコードを CustomValidator コントロール内に記述する必要があります。
データベースに対して検証するには
CustomValidator コントロールをページに追加し、次のプロパティを設定します。
プロパティ
説明
正当性をチェックしているコントロールの ID。
検証が不合格だった場合に表示される 1 つ以上のエラーのテキストと位置を指定するプロパティ。詳細については、「方法 : ASP.NET サーバー コントロールに対する検証エラー メッセージの表示を制御する」を参照してください。
CustomValidator コントロールの ServerValidate イベントのイベント ハンドラを作成します。データベースを検索し、ユーザー入力をデータセットと比較してチェックするコードをイベント ハンドラに追加します。
メモ : ユーザーがコントロールを空白のままにした場合、コントロールは比較検証に合格します。ユーザーに値の入力を促すには、RequiredFieldValidator コントロールも追加します。詳細については、「方法 : ASP.NET サーバー コントロールに必要なエントリを検証する」を参照してください。
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; } } }