C# 验证两个控件(CustomValidator)

C# 验证两个控件(CustomValidator),c#,asp.net,vb.net,C#,Asp.net,Vb.net,在提交表单之前,我需要测试总和(txtA+txtB)是否大于100。是否可以使用CustomValidator执行此操作,因为我不知道是否可以在controltovalidate中选择2文本框 <asp:TextBox ID="txtA" runat="server"></asp:TextBox> <asp:TextBox ID="txtB" runat="server"></asp:TextBox> <asp:CustomValidator

在提交表单之前,我需要测试总和(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" />

谢谢。

您可以按以下步骤操作:

<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" />

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

加成
这将允许您验证隐藏的控件。但是,您需要确保在所有三个控件上都要执行一件事,即利用
ClientIDMode
,并将其设置为
Static
,以便在它们到达页面时,名称与您在标记中指定的名称完全一致。

当您在页面中删除自定义验证时,您可以将验证程序链接到一个控件,但是,如果要对多个控件执行多个验证,则需要包含以下属性

 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
为false时,则
Page.IsValid
也为false。希望这有帮助

是的,您可以做到这一点。您需要客户端验证还是服务器端验证?服务器端验证无法验证隐藏字段。除非创建此处所述的自定义hiddenfield控件,否则这是不可能的:
 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;
}
protected void cmdSearch_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
          LoadDataFromDB();
    }
}