ModalPopupExtender показывает всплывающее окно, когда пользователь нажимает кнопку "Назад"

Как мне запретить ModalPopupExtender показывать всплывающее окно, когда пользователь переходит на страницу с помощью кнопки возврата в браузере?

Я попытался реализовать решение, найденное здесь, которое, по сути, обрабатывает ModalPopup с использованием сценария на стороне клиента но возникли проблемы с его реализацией. ($ find ("modPop") всегда возвращает ноль).

Есть ли другие способы справиться с этим?

РЕДАКТИРОВАТЬ: Сюжет сгущается. Это происходит только потому, что я использую UpdatePanel внутри всплывающего окна. Код ниже должен дублировать ошибку. Также обратите внимание, что использование кнопки-заглушки обязательно.

  1. Нажмите кнопку, чтобы отобразить модальное окно
  2. Подтвердить модальный
  3. Уйти со страницы
  4. Вернуться на страницу с кнопкой назад
  5. Модальное окно нежелательно.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Test" %>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> </asp:ScriptManager>

<span style="display:none;"><asp:Button ID="btnDummy" runat="server" Text="Dummy" /></span>
<asp:Button id="btnShow" runat="server" Text="Show Modal"/>
<ajax:ModalPopupExtender ID="mpTest" runat="server" TargetControlID="btnDummy" PopupControlID="pnlTest"></ajax:ModalPopupExtender>
<asp:Panel id="pnlTest" style="display:none;border:10px solid green" DefaultButton="btnTest" runat="server">        
<asp:UpdatePanel ID="upTest" runat="server">
<ContentTemplate>
        <asp:Button ID="btnTest" runat="server" Text="Test" />        
</ContentTemplate>
<Triggers>
    <ajax:AsyncPostBackTrigger ControlID="btnTest" />
</Triggers>
</asp:UpdatePanel>
</asp:Panel>
<a href="http://stackoverflow.com">StackOverflow</a>
</div>
</form>
Partial Class Test
    Inherits System.Web.UI.Page

    Protected Sub btnShow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnShow.Click
        mpTest.Show()
    End Sub

    Protected Sub btnTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTest.Click
        mpTest.Hide()
    End Sub

End Class

Я думаю, это имеет смысл, поскольку, когда вы подтверждаете модальное окно, полной обратной передачи не происходит, но мне нужно сделать это таким образом. Есть ли обходные пути?


person personaelit    schedule 23.11.2010    source источник


Ответы (1)


В решении на форуме ASP.NET modPop в $find("modPop") - это идентификатор поведения модального всплывающего окна, который в вашем случае будет mpTest. Попробуйте также явно установить BehaviorId="mpTest" на своем ModalPopupExtender и посмотрите, работает ли это.

person batwad    schedule 01.12.2010
comment
Именно так я изначально тестировал решение, но оно не сработало. - person personaelit; 01.12.2010
comment
Попробуйте явно установить BehaviorId для модального всплывающего окна - person batwad; 02.12.2010