ASP.net ValidationSummary C#

时间:2013-02-25 23:00:30

标签: c# asp.net

我有两个问题是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");
}

1 个答案:

答案 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而不是库存版本。