IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Personnaliser une Master Page depuis la page parent


Sujet :

ASP.NET

  1. #1
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut Personnaliser une Master Page depuis la page parent
    Bonjour;

    je prépare une application Web en Asp.NET (C#) et j'ai une petite amélioration à faire sur mon site.
    j'ai plusieurs MasterPage dans mon site.
    je cherche à réduire le nombre des pages master de mon site.

    voila je veux personnaliser mon page Master suivant la page qui appelle cette page ,si j'arrive à identifier la page qui faite appel la page je peut personnaliser cette page pour être adapter a ce je veux ?!!

    j’espère être claire !!!!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Voilà une proposition :
    Supposons que tu a 1 seul MasterPage et 2 pages (page1, page2)
    Les 2 pages utilisent le même MasterPage(Ici :Master1), mais l'affichage sur les pages est différent.

    Dans ce cas tu rajoute un test sur les pages (page1, page2) , et des propriétés publics sur le MasterPage(Ici :Master1) accessible depuis les pages qui l'utilise.

    Exemple : public bool AfficherHeader{get;set;}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (this.Page is page1)
    (Page.Master as Master1).AfficherHeader=true;
    else
    (Page.Master as Master1).AfficherHeader=false;
    Et sur le Header du MasterPage , tu controle facilement dans ce cas là l'affichage du Header....
    avec un simple code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (AfficherHeader)
    // Afficher le header et même d'autre chose 
    ... ..
    ...
    else
    // ne pas Afficher le header et même d'autre chose 
    ....
    ...
    .

    Cdt.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 231
    Points : 203
    Points
    203
    Par défaut
    Hello,

    Je pense qu'il est possible d'avoir une fonction dans la page maître :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void Set_Quelquechose()
    {
    .../...
    }
    et dans la page aspx.cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        MasterPage mp = this.Master as MasterPage;
        mp.Set_Quelquechose();
    }

  4. #4
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Tu crée une classe "BaseMasterPage" qui Herite de System.Web.UI.MasterPage

    Dans cette classe tu rajoute une methode du style

    public virtual Customize()
    {
    //Code Par défaut
    }
    et dans test master pages .cs
    tu remplace ": System.Web.UI.MasterPage" par ": BaseMasterPage"

    et tu rajoute une methode
    public ovveride Customize()
    {
    //Code Customiser pour ta masterPage
    }
    Comme ca dans ta page tu peux faire un appel du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var master = Page.Master as BaseMasterPage;
    master.Customize();

  5. #5
    CUCARACHA
    Invité(e)
    Par défaut
    Salut,

    Tu as déjà pensé aux pages maître imbriquées ?

    Sinon, tu as la méthode suivante :

    Tu crées une classe ViewModelBase qui contient toutes les informations dont ta page maître a besoin.

    Toutes les pages doivent être alimentées par une source de données. Fait en sorte que chacune de ces classes héritent de ViewModelBase.

    Ensuite, tu crée une propriété dans ta page master : ViewModelElements

    A chaque initialisation d'une page enfant, tu instancie les éléments de base de ton ViewModel en conséquence. Puis tu affectes ton ViewModel à la propriété de la master page sans oublier d'indiquer (dans chaque page)

    <%@ Page masterPageFile="~/TaPageMaster.master"%>
    <%@ MasterType virtualPath="~/TaPageMaster.master"%>

    ++

    Laurent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. charger depuis la page B la page C dans la page A ?
    Par elcoyotos dans le forum jQuery
    Réponses: 3
    Dernier message: 17/04/2012, 18h51
  2. Réponses: 1
    Dernier message: 23/05/2010, 09h08
  3. Réponses: 6
    Dernier message: 16/12/2008, 16h31
  4. Réponses: 17
    Dernier message: 30/01/2008, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo