C# 中继器内更新面板中的验证

C# 中继器内更新面板中的验证,c#,asp.net,validation,updatepanel,repeater,C#,Asp.net,Validation,Updatepanel,Repeater,我正在中继器中使用更新面板。我需要更新面板包含验证。验证已经到位,但每个面板都会被触发。我需要它只适用于正在访问的面板 <asp:Repeater ID="rptComments" runat="server" OnItemDataBound="rptComments_OnItemDataBound" OnItemCommand="rptComments_OnItemCommand"> <HeaderTemplate>

我正在中继器中使用更新面板。我需要更新面板包含验证。验证已经到位,但每个面板都会被触发。我需要它只适用于正在访问的面板

<asp:Repeater ID="rptComments" 
    runat="server" 
    OnItemDataBound="rptComments_OnItemDataBound" 
    OnItemCommand="rptComments_OnItemCommand">
        <HeaderTemplate>
            <ul class="comments">
        </HeaderTemplate>
        <ItemTemplate>
            <li>
                <asp:UpdatePanel ID="updatePanelReply" runat="server" UpdateMode="Conditional" >
                        <ContentTemplate>
                            <asp:PlaceHolder ID="plcForm" runat="server">
                                <div class="errors">
                                    <asp:ValidationSummary ID="nestedCommentsValidation" ValidationGroup="nestedSubmit" runat="server" cssClass="validation" ForeColor="Red" />
                                </div>

                                <label>Name<sup>*</sup></label> 
                                <asp:TextBox ID="tbReplyName" runat="server" cssClass="styledInput"></asp:TextBox><br />

                                <asp:RequiredFieldValidator ID="rfv_tbReplyName" 
                                    runat="server" 
                                    Display="None"
                                    ControlToValidate="tbReplyName" 
                                    InitialValue=""
                                    ErrorMessage="Please enter your name."
                                    ValidationGroup="nestedSubmit">
                                </asp:RequiredFieldValidator>

                                <asp:Button ID="btnButton" runat="server" Text="Button" CssClass="submit-button" CommandName="SubmitReply" ValidationGroup="nestedSubmit" />
                            </asp:PlaceHolder>
                        </ContentTemplate>
                 </asp:UpdatePanel>
            </li>
        </ItemTemplate>
        <FooterTemplate>
            </ul>
        </FooterTemplate>
</asp:Repeater>

  • 姓名*

您是否在不同的面板中使用不同的验证组?验证组的全部要点是,验证程序只验证同一组中的控件

我最终取出了验证组,并在OnItemCommand事件中处理它。也许有一种更巧妙的方法,但这对我很有效

if (String.IsNullOrEmpty(tbReplyName.Text.ToString().Trim()))
            strValidationMessage = "<li>Please enter your name.</li>";

Literal ltrErrorMessage = (Literal)e.Item.FindControl("ltrErrorMessage");
            ltrErrorMessage.Text = strValidationMessage;
if(String.IsNullOrEmpty(tbReplyName.Text.ToString().Trim())
strValidationMessage=“
  • 请输入您的姓名。
  • ”; Literal ltrErrorMessage=(Literal)e.Item.FindControl(“ltrErrorMessage”); ltrErrorMessage.Text=strValidationMessage;
    我没有在repeater中绑定的ItemDataBound上设置任何内容来区分验证组。您在发布的代码中看到的是关于验证的所有信息。我应该指出,在更新面板上提交的表单工作正常。这实际上只是验证,我无法区分面板。正如上面的用户所提到的,您应该将validation组设置为在rptComments\u OnItemDataBound事件中区分值,以使验证正常工作。我理解这一点。但是我正在寻找语法方面的帮助。每次通过中继器时,您应该能够将验证组设置为动态值。尝试类似ValidationGroup=“nestedSubmit”+从中继器数据源输入id字段这样的操作。ValidationGroup只是一个字符串,因此您应该能够连接