Validate()函数不会触发

时间:2014-03-02 16:17:50

标签: c# asp.net validation validationsummary validationgroup

这是我的按钮。

<asp:Button ID="btnNext" runat="server" Text="Next" Style="display: none" OnClick="btnNext_Click" CausesValidation="true" ValidationGroup="vgLinR"/>

当我在aspx端验证中编写ValidationGroup =“vgLinR”时。但我有2个不同的验证组。所以我需要在一个按钮中激活这两个验证组。

所以我在代码后面编写代码:

protected void btnNext_Click(object sender, EventArgs e)
{
       Page.Validate("vgLinR");
       Page.Validate("vgLogR");
}

但它不起作用。为什么?我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

它会对你有用..

  <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="*" Font-Size="Medium" ForeColor="Red" ValidationGroup="group 1">*</asp:RequiredFieldValidator>
        <br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <br />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="*" Font-Size="Medium" ForeColor="Red" ValidationGroup="group 1">*</asp:RequiredFieldValidator>
        <br />
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        <br />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3" ErrorMessage="*" Font-Size="Medium" ForeColor="Red" ValidationGroup="group 2">*</asp:RequiredFieldValidator>
        <br />
        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
        <br />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="TextBox4" ErrorMessage="*" Font-Size="Medium" ForeColor="Red" ValidationGroup="group 2">*</asp:RequiredFieldValidator>
        <br />
        <br />
        <br />
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="validate all" OnClick="Button1_Click"/>  <br />

    </div>
    </form>

并编写onclick事件的代码

protected void Button1_Click(object sender, EventArgs e)
    {
        Page.Validate();
    }

答案 1 :(得分:0)

试试这个

 public bool Validate() 
        {
            var isValid = false;
Page.Validate("vgLinR");
            isValid = Page.IsValid;
            if (isValid) 
            {
            Page.Validate("vgLogR");
                isValid = Page.IsValid;
            }

            return isValid;
        }

答案 2 :(得分:-1)

看到阿米特的回答有点太迟了。我已相应更新了我的答案。如果它不符合您的要求,您可以使用类似的想法。

在我的代码中,我使用的是单个ValidationSummary控件,但未指定任何验证组。同时从按钮中删除验证组。文本框a和b可以在一个验证组中,vg1,而文本框c和d可以在另一个验证组中,vg2。我不确定您是如何设置验证组的。

protected void btnNext_Click(object sender, EventArgs e)
{
    if (RadioButton1.Checked)
    {
        Page.Validate("vg1");
        ValidationSummary1.ValidationGroup = "vg1";

    }
    else if (RadioButton2.Checked)
    {
        Page.Validate("vg2");
        ValidationSummary1.ValidationGroup = "vg2";
    }


    if (Page.IsValid)
    {
        //do something in here
    }
}

上面的代码将进行服务器端验证。要在客户端执行此操作,您还需要添加一些javascript。

查看另一篇帖子enable/disable Validation Group from JQuery or Javascript