ASP.NET ModalPopupExtender появляется при вызове функции JavaScript с предупреждением

Я столкнулся с ошибочным поведением ASP.NET Ajax Controls Toolkit ModalPopupExtender, когда я вызываю Alert() функцию JavaScript со стороны сервера, модальное окно появляется на заднем плане. Не знаю, почему это происходит.

вот код:

vb:

Sub ShowAlert(ByVal message As String)
    ScriptManager.RegisterStartupScript(Me.UpdatePanel, UpdatePanel.GetType(), "notificationScript", "<script language='JavaScript'> alert('" & message & "'); </script>", False)
End Sub

aspx:

<asp:UpdatePanel ID="UpdatePanel" runat="server">
  <ContentTemplate>
      <asp:Panel ID="pnlPartialInstructions" CssClass="modal" runat="server">
         ......
      <asp:Panel ID="pnlPrintConfirmation" CssClass="modal" runat="server">
          <table class="ui-accordion">
              <tr>
                  <td colspan="2">
                      <asp:Label Text="Do you want to print the receipt?" ID="lblPrintConfirmation" runat="server"
                          meta:resourcekey="lblPrintConfirmationResource1" Font-Bold="True" Font-Names="tahoma"
                          Font-Size="Large" />
                  </td>
              </tr>
              <tr>
                  <td>
                      <asp:Button ID="btnConfirmPrint" Text="Yes" CssClass="google-button google-button-blue"
                          runat="server" meta:resourcekey="btnConfirmSaveResource1" Font-Size="Large" />
                  </td>
                  <td>
                      <asp:Button ID="btnCancelPrint" Text="No" CssClass="google-button google-button-red"
                          runat="server" meta:resourcekey="btnCancelSaveResource1" Font-Size="Large" />
                  </td>
              </tr>
          </table>
      </asp:Panel>
      <asp:Button ID="HiddenForModel1" Text="" runat="server" CssClass="hide" CausesValidation="False" />
      <ajaxToolkit:ModalPopupExtender ID="pnlPrintConfirmation_ModalPopupExtender" runat="server" DynamicServicePath=""
          Enabled="True" TargetControlID="HiddenForModel1" PopupControlID="pnlPrintConfirmation"
          BackgroundCssClass="ModalBackground" DropShadow="True" CancelControlID="btnCancelPrint"
          RepositionMode="RepositionOnWindowResizeAndScroll">
      </ajaxToolkit:ModalPopupExtender>

      .....
      </asp:UpdatePanel>
  </ContentTemplate>

person Emad Mokhtar    schedule 10.10.2012    source источник


Ответы (1)


Проблема вызвана тем, как работает ModalPopupExtender. Он генерирует JavaScript, который скроет Panel.

Теперь вы регистрируете свой alert() вызов в качестве сценария запуска, это будет удерживать выполнение сценария ModalPopupExtender до тех пор, пока пользователь не выйдет из окна предупреждения. Самое простое исправление - установить display:none на Panel, чтобы скрипт не скрывал его:

<asp:Panel ID="pnlPrintConfirmation" CssClass="modal" Style="display:none;" runat="server">
    ...
</asp:Panel>
person tpeczek    schedule 10.10.2012