ASP.NET自定义验证器在2个字段上

时间:2015-09-03 15:53:57

标签: c# asp.net validation

我知道我可以使用下面的语法来验证字段txtfirstname对数据库的影响,但是如果我需要更进一步并且对数据库验证txtfirstname和txtlastname,那么我将调整什么以便仅提供如果数据库中存在BOTH值alreadyd会出错吗?

<asp:TextBox ID="txtfirstname" runat="server"></asp:TextBox><br />
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtfirstname"
        ErrorMessage="Please input a valid first name" Height="21px" OnServerValidate="CustomValidator1_ServerValidate"
        Width="154px">Please input first name</asp:CustomValidator><br />


protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = false;
    string fname = txtfirstname.Text;
    SqlConnection conn = new SqlConnection(strCon);

    SqlDataAdapter da = new SqlDataAdapter("select * from usertable where usertable.firstname=@fn", conn);
    da.SelectCommand.Parameters.Add("@fn");
    da.SelectCommand.Parameters["@fn"].Value = fname;
    DataSet ds = new DataSet();
    da.Fill(ds);
    if (ds.Tables[0].Rows.Count > 0)
        args.IsValid = true;

} 

1 个答案:

答案 0 :(得分:1)

只需检索姓氏字段的值,然后执行与第一个名称相同的验证:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = false;
        string fname = txtfirstname.Text;
        string lname = txtlastname.Text; // Get the last name
        SqlConnection conn = new SqlConnection(strCon);

        SqlDataAdapter da = new SqlDataAdapter("select * from usertable where usertable.firstname=@fn and usertable.lastname=@ln", conn); // Add last name to query
        da.SelectCommand.Parameters.Add("@fn");
        da.SelectCommand.Parameters["@fn"].Value = fname;
        da.SelectCommand.Parameters.Add("@ln"); // New parameter.
        da.SelectCommand.Parameters["@ln"].Value = lname;
        DataSet ds = new DataSet();
        da.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
            args.IsValid = true;

    }

请注意,我更新了您的代码,我想是姓氏字段的名称。请在您的代码中对其进行测试,并根据您的对象在需要时进行更新。

另外,我建议你不要选择&#34;选择*&#34;因为它不是一个表现良好的做法。只需检查一个字段。