ASP.net验证摘要C#
本文关键字:验证 net ASP | 更新日期: 2023-09-27 18:01:10
我有两个问题,它们以C#web应用程序中单选按钮列表的形式出现。这些问题需要与之相关的字段验证器,我在web控件的末尾也有一个ValidationSummary。当我点击"提交"按钮时,每个问题旁边都会显示两个必填字段验证,验证摘要会正确运行,说明"回答以下问题:",然后列出每个未选择的问题。我遇到的问题是,当我选择两个问题中的一个时,"必填字段"消息会在问题旁边消失,但不会出现在ValidationSummary中。选择错误消息中的某个问题后,如何更新或刷新ValidationSummary?如果我需要更具体一点,请告诉我。谢谢你的帮助!
<asp:RadioButtonList ID="Question1" RepeatLayout="Flow" runat="server">
<asp:ListItem Text="Yes" Value="Yes"></asp:ListItem>
<asp:ListItem Text="No" Value="No"></asp:ListItem>
</asp:RadioButtonList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
Text="Required" ErrorMessage="Question 1"
Display="Dynamic" ControlToValidate="Question1"
EnableClientScript="true">
</asp:RequiredFieldValidator>
<asp:RadioButtonList ID="Question2" RepeatLayout="Flow" runat="server">
<asp:ListItem Text="Yes" Value="Yes"></asp:ListItem>
<asp:ListItem Text="No" Value="No"></asp:ListItem>
</asp:RadioButtonList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
Text="Required" ErrorMessage="Question 2"
Display="Dynamic" ControlToValidate="Question2"
EnableClientScript="true">
</asp:RequiredFieldValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
HeaderText="Answer the following questions:"
DisplayMode="BulletList"
EnableClientScript="true"/>
<asp:Button ID="buttonSubmit" runat="server" Text="Submit"
OnClick="btnSubmit_OnClick"/>
//Code behind for button
protected void btnSubmit_OnClick(object sender, EventArgs e)
{
Response.BufferOutput = true;
Response.Redirect("~/Page.aspx");
}
我很确定默认情况下摘要不会动态更新,而是只在表单提交时更新。
通常,您可以通过挂接客户端onblur事件并调用ValidationSummaryOnSubmit((来解决此问题,但当所选单选按钮发生更改时,RadioButtonList似乎不会触发此事件。
下一个候选者是客户端onClick事件,但RadioButtonList控件没有OnClientClick事件。
因此,当我测试它时,对我有效的解决方案是为RadioButtonList中的每个ListItem挂接客户端onClick事件。像这样:
<asp:RadioButtonList ID="Question1" RepeatLayout="Flow" runat="server">
<asp:ListItem Text="Yes" Value="Yes" onClick="ValidationSummaryOnSubmit()"></asp:ListItem>
<asp:ListItem Text="No" Value="No" onClick="ValidationSummaryOnSubmit()"></asp:ListItem>
</asp:RadioButtonList>
然而,如果你有一堆想要做的事情,这会很快变得很糟糕。可以考虑将RadioButtonList子类化,并在将其发送到客户端之前,在每个子列表项中添加ListItem onclick钩子的服务器端添加,然后使用你的自定义版本的RadioButtonList而不是库存版本。