2009-09-29 7 views
0

J'ai mis une boîte déroulante sur ma page maître avec des valeurs de thème hardocoded, et l'a appelée lstThemeChooser.Comment placer un sélecteur de thème sur mon gabarit?

Je veux être en mesure de définir le thème de la page à l'utiliser. J'ai lu que je devrais mettre ceci dans chacune de mes pages:

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    Page.Theme = Request["lstThemeChooser"]; 
} 

Cependant la demande est nulle, donc aucun thème n'est défini.

La liste déroulante est définie sur autopostback = True.

Toutes les idées que je fais mal, ou si cela est en quelque sorte complètement impossible?

(asp.net)

Répondre

1

Vous ne pouvez pas faire cela dans votre Masterpage. Vous devez le faire dans toutes vos pages. Je suggère sous classing la page Objet:

namespace MyNamespace.Mycontrols 
{ 
    public class Page : System.Web.UI.Page 
    { 
     public Page() 
     { 
      this.PreInit += new EventHandler(Page_PreInit); 
     } 

     void Page_PreInit(object sender, EventArgs e) 
     { 
      // Apply Theme 
      this.Theme = Request["lstThemeChooser"]; 
     } 
    } 
} 

EDIT: En utilisant cette classe

public partial class MyPage: MyNamespace.Mycontrols.Page 
{ 
    ... 
} 
+0

Je veux la liste déroulante apparaisse dans l'en-tête, au très haut à droite de mes pages bien, et L'en-tête est contrôlé par la page maître. Je crains de ne pas bien comprendre votre réponse, pourriez-vous expliquer ce que vous entendez par sous-classer l'objet de la page? Désolé ... – NibblyPig

+0

Dans votre Masterpage, vous pouvez contrôler la logique des contrôles. MAIS: Seulement sur chaque page, vous êtes en mesure de changer le thème. Cela est dû au fait que seule la page, et non la page maître, possède les événements PreInit et InitializeCulture. Le sous-classement signifie que vous créez une telle classe fournie à titre d'exemple. Ensuite, sur chaque page, vous devez changer le baseclass. J'ai édité ma réponse. – Arthur

+0

Je vois, merci beaucoup. La seule chose étrange est, avant que j'aie eu le contrôle dans ma page maître mais l'événement page_preinit dans ma page qui utilise la page maître, mais la demande retournait simplement la null ... Y at-il quelque chose que je manque? – NibblyPig

Questions connexes