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 :

Get depuis la MasterPage


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Points : 122
    Points
    122
    Par défaut Get depuis la MasterPage
    Bonjour,

    j'ai un petit souci :
    sur ma MasterPage, j'ai plusieurs variables accessibles et modifiables depuis les autres pages.

    L'une d'entre elle, la variable "Titre" qui est le titre de chaque page, est un objet Literal,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Literal ID="titre" runat="server" Text="Titre"></asp:Literal>
    L'autre, est une chaîne de caractère dans le code behind.

    Mon problème : quand j'essaye d'afficher ma chaîne de caractère dans une autre page, celle-ci est vide, alors qu'elle prends toujours une valeur dans le Page_Load de la MasterPage, qui elle l'affiche correctement.

    Pour rendre accessibles mes variables, je procède de la manière suivante :

    Pour le titre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public String Titre
        {
            get
            {
                return titre.Text;
            }
     
            set
            {
                titre.Text = value;
            }
        }
    Pour la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string cn;
     
    public String Cn
        {
            get { return cn; }
        }
    protected void Page_Load(object sender, EventArgs e)
        {
    cn = _entry.Properties["cn"].Value.ToString(); 
                Label1.Text = "Bienvenue " + cn;
        }
    Dans les pages web, j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Master.Titre = "Titre de la page";
    TextBox1.Text = Master.Cn;
    Dans le navigateur, le titre de la page s'affiche correctement,
    en revanche la TextBox est vide, est la valeur de Master.Cn est à null.
    Pourtant, dans la partie figée par la MasterPage, le "Bienvenue " + cn affiche bien la valeur qu'il devrait y avoir dans la TextBox. Du coup la variable semble se mettre à null lors de l'appel...

    Quelqu'un a une idée ?
    Merci =)

  2. #2
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Si je me rappelle bien, le page_load de la masterpage arrive *après* le page_load de ses contenus...donc, si tu appelles Master.Cn dans le page_load de tes pages, ca ne fonctionnera pas

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Points : 122
    Points
    122
    Par défaut
    Ce n'est (malheureusement pour moi ici) pas le cas, si je fais un Master.Titre dans la TextBox au lieu du Master.Cn, le titre s'affiche, le Load de la MasterPage a donc lieu avant celui de l'autre page.
    J'ai aussi essayé d'appeler le Master.Cn dans un évènement ultérieur mais ça ne marche pas non plus

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Text = Master.Cn;
    tu n'es pas encore passé dans le page_load de la master page, donc cn = null

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Points : 122
    Points
    122
    Par défaut
    Désolé du temps que j'ai pris pour donner des nouvelles, j'avais provisoirement laissé l'idée de la centralisation via la Master Page de côté puisqu'il fallait que j'avance dans mon projet.

    Je reviens mettre mon topic en résolu et donner quelques infos pour ceux qui souhaitent.

    En effet, le Page_Load de la Master Page intervient après celui des pages de contenu (le Master.Titre étant une erreur de ma part). Philippe Vialatte et lutecefalco avaient raison, merci à eux.

    La solution consiste à initialiser les variables dont on a besoin dans le Page_Init de la Master Page, qui intervient avant tout autre chargement, et d'écrire ensuite les accesseurs et mutateurs requis. De cette manière, on peut aisément récupérer des variables sur les autres pages avec Master.maValeur.

    Voici un lien msdn listant l'ordre des evenements MasterPage/Page de contenu.


    Merci encore,
    Ashura.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/09/2010, 09h56
  2. Modifier metatags de la masterpage depuis une page
    Par aloisio11 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/10/2007, 14h39
  3. Réponses: 6
    Dernier message: 02/12/2006, 20h51
  4. Réponses: 2
    Dernier message: 22/10/2006, 21h04
  5. Get error msg depuis IB
    Par dmaitre dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/01/2005, 15h31

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