4

在提交表单之前,我需要测试总和(txtA + txtB)是否大于 100。是否可以使用 a 来执行此操作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" />

谢谢。

4

3 回答 3

9

你可以这样做:

<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;
}
于 2013-04-19T19:10:17.407 回答
1

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

 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属性分配给您需要的值。另一方面,验证是在您加载页面之前完成的,因此如果您单击一个按钮,该按钮执行一个操作,例如从数据库读取值以防万一一切正确,则在该操作上您需要包括以下检查。

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

什么时候args.IsValid是假的,那么Page.IsValid也是假的。希望这可以帮助

于 2016-11-29T15:59:55.353 回答
-1

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

标记

<asp:HiddenField ID="SumOfValues" />
<asp:CustomValidator ID="CustomValidator2"
    runat="server"
    ErrorMessage="CustomValidator"
    ControlToValidate="SumOfValues" />

查询

$(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以便名称与您在到达页面时在标记中指定的名称完全相同。

于 2013-04-19T19:14:23.420 回答