Wie verhindere ich, dass ein ModalPopupExtender das Popup anzeigt, wenn ein Benutzer über die Zurück-Schaltfläche des Browsers zur Seite navigiert?ModalPopupExtender zeigt ein Popup an, wenn der Benutzer die Zurück-Taste drückt
Ich habe versucht, die gefundene Lösung here zu implementieren, die im Wesentlichen das ModalPopup mit clientseitigem Skript handhabt, aber Probleme mit seiner Implementierung hatte. ($ find ("modPop") gibt immer null zurück).
Gibt es andere Techniken, um dies zu handhaben?
EDIT: Das Grundstück verdickt. Dies geschieht nur, weil ich ein UpdatePanel innerhalb des Popups verwende. Der folgende Code sollte den Fehler duplizieren. Beachten Sie auch, dass die Verwendung der Dummy-Schaltfläche erforderlich ist.
- Click-Taste modal
- bestätigen modal
- Navigieren weg zu zeigen, ab Seite
- Navigation zurück zur Seite w/Zurück-Taste
- Modal unerwünschte Weise erscheint.
<%@ 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
Ich denke, das macht Sinn, als wenn Sie die modale eine vollständige Postbacks bestätigen nicht geschehen ist, aber ich muss es auf diese Art und Weise tun. Gibt es Workarounds?
So habe ich die Lösung ursprünglich getestet und es hat nicht funktioniert. – plntxt
Versuchen Sie explizit, die 'BehaviorId' des modalen Popups zu setzen – batwad