Проблемы ValidatorCalloutExtender и ModalPopupExtender на главной странице - PullRequest
1 голос
/ 14 ноября 2011

Я только что создал сайт с MasterPage.У меня есть два условия, которые проиллюстрируют мою проблему:

Условие 1:

Я добавил ModalPopupExtender на веб-сайте website.master.Он имеет три поля, и каждое поле имеет RequiredFieldValidator и ValidatorCalloutExtender .

Условие 2:

У меня естьНесколько разных страниц, где вы можете нажать на ссылку регистрации.Когда вы нажимаете ссылку регистрации, появится форма регистрации.Эта форма также содержит RequiredFieldValidators и ValidatorCalloutExtenders для каждого поля.

Проблема:

Если я открою форму регистрации ихочу разместить свой отзыв, я нажимаю на кнопку обратной связи.Отображается модальное всплывающее окно обратной связи.Если я нажму кнопку «Отправить», не заполнив форму обратной связи, она выдаст ошибку в формате ValidatorCalloutExtender на панели ModalPopupExtender .Однако, это не показывает мне никакой ошибки, но 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>

1 Ответ

0 голосов
/ 31 января 2012

Поместите вышеуказанный код в UpdatePanel с UpdateMode="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. Гадкий! Ну что ж, надеюсь, это кому-нибудь поможет ...

...