ModalPopupExtender показывает всплывающее окно, когда пользователь нажимает кнопку назад - PullRequest
2 голосов
/ 23 ноября 2010

Как мне запретить 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

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

1 Ответ

0 голосов
/ 01 декабря 2010

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

...