2010-11-23 23 views
2

Comment empêcher un ModalPopupExtender d'afficher la fenêtre contextuelle lorsqu'un utilisateur accède à la page via le bouton Précédent du navigateur?ModalPopupExtender affiche une fenêtre contextuelle lorsque l'utilisateur appuie sur le bouton Précédent

J'ai essayé d'implémenter la solution trouvée here qui gère essentiellement le ModalPopup en utilisant un script côté client mais qui a rencontré des problèmes avec son implémentation. ($ find ("modPop") renvoie toujours la valeur null).

Existe-t-il d'autres techniques pour gérer cela?

EDIT: La courbe s'épaissit. Cela se produit uniquement parce que j'utilise un UpdatePanel à l'intérieur du popup. Le code ci-dessous devrait dupliquer l'erreur. Notez également que l'utilisation du bouton factice est requise.

  1. Cliquez sur le bouton pour afficher modal
  2. Confirmation modal
  3. quittez la page
  4. Naviguer Retour à la page w/bouton retour
  5. Modal apparaît 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

Je pense que cela a un sens que lorsque vous confirmez le modal postback complet ne se produit pas mais je dois le faire de cette façon. Y a-t-il des solutions de contournement?

Répondre

0

Dans la solution sur le forum ASP.NET, le modPop dans $find("modPop") est l'ID de comportement de la fenêtre modale qui dans votre cas sera mpTest. Essayez de définir explicitement BehaviorId="mpTest" sur votre ModalPopupExtender et de voir si cela fonctionne.

+0

C'est ainsi que j'ai testé la solution à l'origine et cela n'a pas fonctionné. – plntxt

+0

Essayez de définir explicitement le 'BehaviorId' du popup modal – batwad