【问题标题】:ValidatorCalloutExtender and ModalPopupExtender Issues on MasterPageMasterPage 上的 ValidatorCalloutExtender 和 ModalPopupExtender 问题
【发布时间】:2011-11-14 08:56:30
【问题描述】:

我刚刚创建了一个带有 MasterPage 的网站。我有两个条件可以说明我的问题:

条件一:

我在 website.master 上添加了一个 ModalPopupExtender。它有三个字段,每个字段都有一个 RequiredFieldValidator 和一个 ValidatorCalloutExtender

条件二:

我有几个不同的页面,您可以在其中单击注册链接。当您点击注册链接时,会出现一个注册表格。此表单还为每个字段提供 RequiredFieldValidatorsValidatorCalloutExtenders

问题:

如果我打开注册表并想提交反馈,我点击反馈按钮。显示反馈模式弹出窗口。如果我在未填写反馈表的情况下单击提交按钮,它应该在 ModalPopupExtender 面板上以 ValidatorCalloutExtender 格式显示错误。但是,它没有显示任何错误,但 ValidatorCalloutExtender 确实显示在注册表单上以及相应的验证。

<cc1:ModalPopupExtender CancelControlID="lnk_cancel" ID="popup_change_password" BackgroundCssClass="modalBackground"
    runat="server" TargetControlID="ImageButton1" PopupControlID="panel_change_password">
</cc1:ModalPopupExtender>
<asp:Panel ID="panel_change_password" runat="server" Style="display: none; height: 400px;
    width: 400px; padding-left:30px; background-repeat:no-repeat;" BackImageUrl="~/Images/background.gif">
    <table cellspacing="0" cellpadding="0" border="0">
     <tr>
            <td colspan="3" valign="top">
                <table cellpadding="0" cellspacing="0" width="400px">
                    <tr>
                        <td align="right">
                            <asp:ImageButton ID="lnk_cancel" runat="server" ImageUrl="Images/close.gif" Height="30px"
                                Width="30px" />
                        </td>
                    </tr>
                </table>

            </td>
        </tr>
        <tr>
            <td colspan="3">
                <asp:Label ID="lbl_new_password" runat="server" Text="Your feedback is important to us."
                    CssClass="login_font1"></asp:Label>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td>
                <asp:Label ID="lbl_name" runat="server" Text="Name" CssClass="Label_Styles"></asp:Label>
            </td>
            <td>
                &nbsp;:&nbsp;
            </td>
            <td>
                <asp:TextBox ID="txt_name" runat="server" CssClass="Textbox_Styles"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td>
                <asp:Label ID="lbl_email" runat="server" Text="Email Address" CssClass="Label_Styles"></asp:Label>
            </td>
            <td>
                &nbsp;:&nbsp;
            </td>
            <td>
                <asp:TextBox ID="txt_email" runat="server" CssClass="Textbox_Styles"></asp:TextBox>
            </td>
        </tr>
         <tr>
            <td colspan="3">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td>
                <asp:Label ID="lbl_comment" runat="server" Text="Comments" CssClass="Label_Styles"></asp:Label>
            </td>
            <td>
                &nbsp;:&nbsp;
            </td>
            <td>
                <asp:TextBox ID="txt_comment" runat="server" CssClass="Textbox_Styles" Height="120px"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                &nbsp;
            </td>
        </tr>

    </table>
</asp:Panel>

【问题讨论】:

    标签: c# asp.net asp.net-ajax ajaxcontroltoolkit


    【解决方案1】:

    将上面的代码放在UpdatePanelUpdateMode="Conditional"ChildrenAsTriggers="False". 所以它看起来像:

    <asp:UpdatePanel ID="sbsModalExtenderUpdatePanel" runat="server" UpdateMode="Conditional"
        Visible="False" ChildrenAsTriggers="False">
        <ContentTemplate>
            <asp:Panel ID="StepByStepBookingPanel" runat="server" Enabled="false" EnableViewState="false"
                Style="display: block" CssClass="mediumModalPopup" ScrollBars="Auto" Width="800px"
                Height="300px" ViewStateMode="Enabled">
                <div id="clientCoordDiv" runat="server">
                    <table id="StepByStepTable" runat="server">
    

    等等……

                    </table>
                </div>
            </asp:Panel>
            <ajax:ModalPopupExtender ID="mpeStepByStepBooking" runat="server" BackgroundCssClass="modalBackground"
                PopupControlID="StepByStepBookingPanel" CancelControlID="BtnCancel" OnCancelScript="ClearStepByStepPopup"
                TargetControlID="hdnStepByStepButton" DropShadow="true" BehaviorID="modalwithinput" />
            <asp:CompareValidator ID="ClientCoordinatorCompareValidator" runat="server" ErrorMessage="Please select a Client Coordinator"
                ControlToValidate="ddlClientCoordinator" Display="None" Operator="NotEqual" SetFocusOnError="True"
                Type="Integer" ValueToCompare="0" ValidationGroup="SelectionRequired">
            </asp:CompareValidator>
            <asp:CompareValidator ID="CVOCoordinatorCompareValidator" runat="server" ErrorMessage="Please select a CVO Coordinator"
                ControlToValidate="ddlCVOCoordinator" Display="None" Operator="NotEqual" ValueToCompare="0"
                Type="Integer" SetFocusOnError="True" ValidationGroup="SelectionRequired">
            </asp:CompareValidator>
            <ajax:ValidatorCalloutExtender ID="CompareClientCoordinatorExt" runat="server" Enabled="True"
                TargetControlID="ClientCoordinatorCompareValidator" BehaviorID="ClientValidatorExt">
            </ajax:ValidatorCalloutExtender>
            <ajax:ValidatorCalloutExtender ID="CVOCoordinatorCompareValidatorExt" BehaviorID="CVOValidatorExt"
                runat="server" Enabled="True" TargetControlID="CVOCoordinatorCompareValidator">
            </ajax:ValidatorCalloutExtender>
        </ContentTemplate>
    </asp:UpdatePanel>
    

    这将使对话框在您验证时保持打开状态。不幸的是,我没有完整的解决方案,因为我的验证器消息没有显示。到目前为止,从我在网上得到的信息来看,这是 Ajax 库的问题。丑陋! 哦,好吧,希望这对某人有所帮助...

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 2011-04-15
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2010-11-04
      相关资源
      最近更新 更多