0

我有两个问题是 C# Web 应用程序中单选按钮列表的形式。这些问题需要与它们关联的字段验证器,并且我的 Web 控件末尾还有一个 ValidationSummary。当我单击“提交”按钮时,旁边的每个问题都会出现两个必填字段验证,并且验证摘要通过说明“回答以下问题:”正确工作,然后列出每个未选​​择的问题. 我遇到的问题是当我选择两个问题之一时,“必填字段”消息会在问题旁边消失,但不会出现在 ValidationSummary 中。How can I get the ValidationSummary to update or refresh when one of the questions in the error messages are selected? 如果我需要更具体,请告诉我。

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

1 回答 1

0

我很确定摘要默认情况下不会动态更新,而只会在表单提交时更新。

通常,您可以通过挂接客户端onblur事件并调用验证符号()来解决这个问题,但是当所选的广播按钮更改时,看起来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 而不是库存版本。

于 2013-02-25T23:21:28.723 回答