为什么asp.net c#ValidationSummary显示多个消息框?

时间:2017-02-03 15:38:10

标签: c# asp.net webforms

这就是事情。我在C#中有一个ASP.NET Web应用程序。在Default.aspx我有UpdatePanel包含所有元素。在那里,我有三个与TextBox相关联的验证器,4 RadioButton(两个属于两个一组,另外两个与另一个组相关),对于每个组,我有一个验证器,以验证是否有一个元素检查每组。对于所有RadioButtonAutoPostBack设置为"True",因为当" No"为两个组选择了选项,然后我将启用多行TextBox,以便用户可以输入一些文本。最后还有一个ValidationSummary,它会在弹出框和页面中显示错误消息。主要问题如下:如果我首先从RadioButtons中选择两个选项,然后单击提交按钮,而不在TextBox中输入任何带有3个验证器的文本,我将获得3个弹出 - 错误消息。更有趣的是,如果我在3个弹出错误消息之后选择来自任何RadioButton组的另一个选项,我将收到4个弹出错误消息。我猜测它与AutoPostBack的{​​{1}}属性有关,因为当我点击它时会发生这种情况,但我不知道为什么或如何修复它。

以下是RadioButton的代码:

Default.aspx

这里是<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Text="M-DCPS 7-digit Student ID#:"></asp:Label> <asp:TextBox ID="studentIDtbox" runat="server" MaxLength="7" Width="6%" CausesValidation="false"></asp:TextBox> <asp:RequiredFieldValidator Font-Size="Large" ID="RequiredFieldValidatorAccount" runat="server" ControlToValidate="studentIDtbox" ErrorMessage="ID# required" ForeColor="Red">*</asp:RequiredFieldValidator> <asp:RegularExpressionValidator Font-Size="Large" ID="RegularExpressionValidator2" runat="server" ControlToValidate="studentIDtbox" ErrorMessage=" ID requires 7 digits" ValidationExpression="^[\s\S]{7,}$" ForeColor="Red">*</asp:RegularExpressionValidator> <asp:RegularExpressionValidator Font-Size="Large" ID="RegularExpressionValidator1" runat="server" ControlToValidate="studentIDtbox" ErrorMessage=" ID only accepts numbers" ValidationExpression="^\d+$" ForeColor="Red">*</asp:RegularExpressionValidator> <asp:Label ID="Label2" runat="server" Text="Paper Form:"></asp:Label> <asp:DropDownList ID="paperForm" runat="server"></asp:DropDownList> <asp:Label ID="Label3" runat="server" Text="Paper Accommodation:"></asp:Label> <asp:DropDownList ID="paperType" runat="server"></asp:DropDownList> <asp:CustomValidator Font-Size="Large" runat="server" ID="cvIEP" OnServerValidate="cvIEP_ServerValidate" Enabled="true" Display="Dynamic" SetFocusOnError="true" ErrorMessage="You must select at least one item for documentation on IEP/Section 504." ForeColor="Red">*</asp:CustomValidator> <asp:Label ID="Label4" runat="server" Text="Paper is documented?"></asp:Label> <asp:RadioButton ID="iepYesRb" runat="server" GroupName="IEPRequirement" Text="Yes" OnCheckedChanged="rButton_CheckedChanged" AutoPostBack="True" CausesValidation="false"/> <asp:RadioButton ID="iepNoRb" runat="server" GroupName="IEPRequirement" Text="No" OnCheckedChanged="rButton_CheckedChanged" AutoPostBack="True" CausesValidation="false"/> <asp:CustomValidator Font-Size="Large" runat="server" ID="cvRuse" OnServerValidate="cvRuse_ServerValidate" Enabled="true" SetFocusOnError="true" ErrorMessage="You must select at least one item for regular use." ForeColor="Red">*</asp:CustomValidator> <asp:Label ID="Label5" runat="server" Text="Is it used regularly?"></asp:Label> <asp:RadioButton ID="ruseYesRb" runat="server" GroupName="RegularUse" Text="Yes" OnCheckedChanged="rButton_CheckedChanged" AutoPostBack="True" CausesValidation="false"/> <asp:RadioButton ID="ruseNoRb" runat="server" GroupName="RegularUse" Text="No" OnCheckedChanged="rButton_CheckedChanged" AutoPostBack="True" CausesValidation="false"/> <asp:Label ID="Label6" runat="server" Text="Provide other evidence if two 'No' where selected."></asp:Label> <asp:TextBox ID="evidenceTbox" Style="height: 130px" runat="server" TextMode="MultiLine" Width="100%" Enabled="false"></asp:TextBox> <asp:Button ID="submitButton" runat="server" Text="Submit" OnClick="submit_OnClick" /> <asp:ValidationSummary ID="valTest" runat="server" ShowMessageBox="true" BackColor="LightYellow" ForeColor="Red" Width="100%" /> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID="submitButton" /> <asp:AsyncPostBackTrigger ControlID="iepYesRb" EventName="CheckedChanged" /> <asp:AsyncPostBackTrigger ControlID="iepNoRb" EventName="CheckedChanged" /> <asp:AsyncPostBackTrigger ControlID="ruseYesRb" EventName="CheckedChanged" /> <asp:AsyncPostBackTrigger ControlID="ruseNoRb" EventName="CheckedChanged" /> </Triggers> </asp:UpdatePanel> 的代码:

Default.aspx.cs

任何帮助都将受到赞赏,评论家将非常欢迎。感谢。

0 个答案:

没有答案