2010-11-23 3 views
2

Как отключить отображение ModalPopupExtender, когда пользователь перейдет на страницу с помощью кнопки браузера?ModalPopupExtender показывает всплывающее окно, когда пользователь обращается к кнопке «Назад»

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

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

EDIT: Участок сгущается. Это происходит только потому, что я использую UpdatePanel внутри всплывающего окна. Код ниже должен дублировать ошибку. Также обратите внимание, что требуется использовать фиктивную кнопку.

  1. кнопка Нажмите, чтобы показать модальные
  2. Подтвердите На модальной
  3. уйдут со страницы
  4. Перейдите обратно на страницу задней кнопки ж/
  5. Модальных появляется undesireably.
<%@ 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

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

ответ

0

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

+0

Это то, как я первоначально протестировал решение, и оно не сработало. – plntxt 2010-12-01 14:33:30