2010-06-02 5 views
1

J'essaie de créer une boîte modale par défaut qui doit être accessible à partir de n'importe quelle partie de l'application, et doit être appelée quand je veux depuis n'importe quelle page. (doit être appelé depuis le code-behind).Appelez (show) un pop-up modal situé dans MasterPage de ses enfants

J'ai donc eu l'idée d'un Panel + modalPopupExtender placé dans la MasterPage, et l'appelant à partir de pages enfants via code-behind.

Comment puis-je faire cela? Ou peut-être que vous avez une meilleure idée pour résoudre ce problème.

+0

Si cela se comporter différemment que, par exemple, la redirection vers une autre page et revenir une fois la boîte de dialogue a été traitée? Ou suis-je confus et par "code-behind" vous voulez dire du JavaScript dans votre page? – Jens

+0

Je veux juste montrer une boîte modale, que l'utilisateur peut lire, puis fermez. (Code derrière = fichier .cs) –

Répondre

3

Étant donné que le modal doit être appelé à partir du code derrière, vous pouvez y arriver comme ça

Ajouter une méthode à votre page maître

public class MyMaster : MasterPage 
{ 
    public void ShowModal(string someParameter) 
    { 
      // Do your logic here 
      // Show the modal 
    } 
} 

ajouter ensuite une méthode à votre page , ou la base de la page comme ça ...

public void ShowModal(string someParameter) 
{ 
    MyMaster masterPage = this.Master as MyMaster; 
    masterPage.ShowModal(someParameter); 
} 

Je recommande d'utiliser une classe de base pour yo ur pages de sorte que vous n'avez pas à reproduire la méthode ci-dessus.

+0

Cela fonctionnera sûrement si j'utilise un modalPopupExtender, mais si je veux montrer un autre panneau ou div, en utilisant quelque chose comme ajax (updatepanels ne fonctionnerait pas parce que les déclencheurs ne sont pas ' t dans la même page)? –

+0

C'est vrai. Vous pouvez créer un contrôle utilisateur qui utilise le code javascript partagé pour utiliser AJAX pour extraire du contenu et les afficher dans un modal contextuel. – ctorx

1

Ajoutez une méthode à votre page maître. Par exemple:

public void ShowMpSignup4free() 
{ 
    mpSignup4free.Show(); 
} 

appeler cette méthode à partir du code behind comme ceci:

protected void lbSignin_Click(object sender, EventArgs e) 
{ 
    MasterPages_WebMasterPage wm = (MasterPages_WebMasterPage)(this.Master); 
    wm.ShowMpSignup4free(); 
} 

Ici mpSignup4free est ID de ModelPopupExtender et MasterPages_WebMasterPage est le nom de la page principale (WebMasterPage est le nom de la page principale placée dans le dossier MasterPages, c'est pourquoi le nom complet du master page est MasterPages_WebMasterPage). Et lbSignin est un bouton Lien sur la page dont la page maître est WebMasterPage et dont l'événement click affichera le popup du modèle.

Pour éviter après mettre à nouveau le bouton lien lbSignin dans UpdatePanel ...