如何:对照数据库中的值验证 ASP.NET 服务器控件

更新:2007 年 11 月

您可以对照数据库来验证用户输入,以确保用户输入的值可以识别。为此,您必须在 CustomValidator 控件中编写代码,在数据库中查找数据匹配项。

对照数据库进行验证

  1. CustomValidator 控件添加到页中并设置下列属性:

    属性

    说明

    ControlToValidate

    正在验证的控件的 ID。

    ErrorMessage, Text, Display

    这些属性指定验证失败时要显示的错误的文本和位置。有关详细信息,请参见如何:控制 ASP.NET 服务器控件的验证错误信息显示

  2. CustomValidator 控件的 ServerValidate 事件创建一个事件处理程序。在事件处理程序中,添加代码查找数据库并对照数据集检查用户输入。

    s5z00s5e.alert_note(zh-cn,VS.90).gif说明:

    如果用户将控件保留为空白,则此控件将通过比较验证。若要强制用户输入值,则还要添加 RequiredFieldValidator 控件。有关详细信息,请参见如何:验证 ASP.NET 服务器控件的必需项

  3. 在 ASP.NET 网页代码中添加测试,以检查有效性。有关详细信息,请参见如何:以编程方式测试 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 控件