我有两个问题是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");
}
答案 0 :(得分:0)
我非常确定默认情况下摘要不会动态更新,而只会在表单提交时动态更新。
通常,您可以通过挂钩客户端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而不是库存版本。