在转发器的更新面板中进行验证

本文关键字:验证 转发器 更新 | 更新日期: 2023-09-27 17:56:29

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

<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;