【问题标题】:Validate() function doesn't fireValidate() 函数不会触发
【发布时间】:2023-03-14 01:59:01
【问题描述】:

这是我的按钮。

<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");
}

但它不起作用。为什么?我该怎么做?

【问题讨论】:

  • 为什么要使用两个验证组,如果您想从按钮上验证这两个验证。只使用一个验证组而不是 twp
  • 我在一组中有 2 个单选按钮(radiobtn1 和 radiobtn2)和 4 个名称为 a、b、c、d 的文本框。页面末尾有标准按钮。我将 asp:requiredFieldValidators 添加到所有文本框。因此,当我单击按钮时,一个验证摘要适用于所有文本框。我想这样做,如果单击 radiobtn1,validationsummary1 应该适用于文本框 a 和 b,如果单击 radiobtn2,validationsummary2 应该适用于文本框 c 和 d。如果单击了 radiobtn1,我不需要控制 c 和 d。它们可以为空。但是 radiobtn2 被点击了它们不能为空。
  • 对于单选按钮验证,我已经为您提供了解决方案,对于按钮,请参阅我的答案。希望对你有帮助。

标签: c# asp.net validation validationsummary validationgroup


【解决方案1】:

它会为你工作..

  <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();
    }

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

    • Page.Validate("vgLinR") 是无效函数。
    • 我真正的问题是 Page.Validate("vgLinR");什么都不做
    【解决方案3】:

    看到你对 Amit 的回答有点太晚了。我已经相应地更新了我的答案。如果它不符合您的要求,您可以使用类似的想法。

    在我的代码中,我使用了一个没有指定任何验证组的 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

    【讨论】:

    • 我真正的问题是 Page.Validate("vgLinR");什么都不做
    • 不,它不会,代码 'Page.Validate("vgLinR")' 不会做任何事情,因为它后面的行,'Page.Validate("vgLogR")' 会覆盖它。我会尽快更新我的答案。
    • vgLinR 作为验证组提供给 textbox, a & b 而 vgLogR 作为验证组提供给 textbox, b & c?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2015-03-29
    • 2012-06-20
    相关资源
    最近更新 更多