在提交表单之前,我需要测试和( txtA + txtB)是否大于100。是否可以使用CustomValidator执行此操作,因为我不知道是否可以选择控件中的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" />谢谢。
发布于 2013-04-20 03:10:17
您可以执行以下操作:
<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;
}发布于 2016-11-29 23:59:55
在页面中放置自定义验证时,可以将验证程序链接到控件,但如果要对多个控件执行多个验证,则需要包括以下属性
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。希望这能有所帮助
发布于 2013-04-20 03:14:23
您需要添加另一个控件<asp:HiddenField>,然后利用jQuery来设置该控件的值。它可能看起来像这样:
标记
<asp:HiddenField ID="SumOfValues" />
<asp:CustomValidator ID="CustomValidator2"
runat="server"
ErrorMessage="CustomValidator"
ControlToValidate="SumOfValues" />JQUERY
$(document).ready(function() {
$('#txtA').change(sumValues);
$('#txtB').change(sumValues);
});
function sumValues() {
var val1 = $('txtA').value();
if (val1 === undefined) { val1 = 0; }
var val2 = $('txtB').value();
if (val2 === undefined) { val2 = 0; }
$('#SumOfValues').value(val1 + val2);
}这样你就可以验证隐藏的控件了。但是,您需要确保在所有三个控件上执行的一件事是利用ClientIDMode并将其设置为Static,这样当它们到达页面时,名称就是您在标记中指定的名称。
https://stackoverflow.com/questions/16111763
复制相似问题