验证两个控件(CustomValidator)

本文关键字:控件 CustomValidator 两个 验证 | 更新日期: 2023-09-27 18:10:08

在提交表单之前,我需要测试总和(txtA + txtB)是否大于100。是否可以用CustomValidator来做到这一点,因为我不知道我是否可以选择controltovalidate

中的2个文本框
<asp:TextBox ID="txtA" runat="server"></asp:TextBox>
<asp:TextBox ID="txtB" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator2" 
                     runat="server" 
                     ErrorMessage="CustomValidator" />
<asp:Button ID="Button1" runat="server" Text="Button" />

谢谢。

验证两个控件(CustomValidator)

你可以这样做:

<asp:TextBox ID="txtA" runat="server" /> 
<asp:TextBox ID="txtB" runat="server" />
<asp:CustomValidator ID="CV1"runat="server" 
    OnServerValidate="ServerValidation" 
    ErrorMessage="Sum is less than 100" />
后台代码:

protected void ServerValidation(object source, ServerValidateEventArgs args)
{
    args.IsValid = int.Parse(txtA.Text)+ int.Parse(txtB.Text) >100;
}

当您在页面中放置自定义验证时,您可以将验证器链接到控件,但是如果您想要在多个控件上执行多个验证,则需要包含以下属性

 OnServerValidate="MyMethodOnServerSide" 

并在服务器端定义该方法

protected void MyMethodOnServerSide(object source, ServerValidateEventArgs args)
{
     if (string.IsNullOrEmpty(mytxt1.Text) &&
            string.IsNullOrEmpty(mytxt2.Text))
            {
                args.IsValid = false;
                return;
            }
            args.IsValid = true;
}

args.IsValid属性赋值为您需要的值。另一方面,验证是在加载页面之前完成的,因此,如果您单击了一个按钮,该按钮执行了一个操作,例如在一切正确的情况下从DB读取值,则需要在该操作中包含以下检查。

protected void cmdSearch_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
          LoadDataFromDB();
    }
}

args.IsValid为假时,Page.IsValid也为假。希望对大家有所帮助

您需要添加另一个控件<asp:HiddenField>,然后利用jQuery来设置该控件的值。它可能看起来像这样:

<标题>标记
<asp:HiddenField ID="SumOfValues" />
<asp:CustomValidator ID="CustomValidator2"
    runat="server"
    ErrorMessage="CustomValidator"
    ControlToValidate="SumOfValues" />
<标题> JQUERY h1> 这应该允许您验证隐藏控件。但是,您需要确保在所有三个控件上都使用ClientIDMode并将其设置为Static,以便在它们进入页面时与标记中指定的名称完全一致。