C# 验证两个控件(CustomValidator)
在提交表单之前,我需要测试总和(txtA+txtB)是否大于100。是否可以使用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
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();
}
}