如何:对照数据库中的值验证 ASP.NET 服务器控件
更新:2007 年 11 月
您可以对照数据库来验证用户输入,以确保用户输入的值可以识别。为此,您必须在 CustomValidator 控件中编写代码,在数据库中查找数据匹配项。
对照数据库进行验证
将 CustomValidator 控件添加到页中并设置下列属性:
属性
说明
正在验证的控件的 ID。
这些属性指定验证失败时要显示的错误的文本和位置。有关详细信息,请参见如何:控制 ASP.NET 服务器控件的验证错误信息显示。
为 CustomValidator 控件的 ServerValidate 事件创建一个事件处理程序。在事件处理程序中,添加代码查找数据库并对照数据集检查用户输入。
说明: 如果用户将控件保留为空白,则此控件将通过比较验证。若要强制用户输入值,则还要添加 RequiredFieldValidator 控件。有关详细信息,请参见如何:验证 ASP.NET 服务器控件的必需项。
在 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; } } }