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 :

Récupérer une variable dans une master page


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut Récupérer une variable dans une master page
    Bonjour à tous,

    Bon, voilà, je bloque sur un probleme surement tres stupide, mais les solutions que je trouve de ci de là sur le net ne m'aide pas beaucoup.

    J'aimerais pouvoire récupérer le contenu d'une variable créé dans une master page à partire d'une page enfant.

    J'avais essayé avec page.Items, mais là, je récupère une valeur vide au niveau de la page enfant, alors que ça mache bien au niveau de la master page.

    J'ai aussi essayé de créer une public string dans ma master page, puis de la récupérer avec un truc du genre master.page.mavariable, mais rien n'y fait...

    Merci pour votre aide !

    [edit] Oui, au fait, comme j'ai trouvé beaucoup de soluce dans ce gout là, je voulais préciser que je voulais pouvoire faire ça
    1) completement coté serveur
    2) sans cookies
    3) sans session
    4) sans avoir à remplire un controle pour le récupérer

    Merci d'avance !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'Désolé c'est du vb !
     
    Partial Class MaMasterPage
      Inherits System.Web.UI.MasterPage
    public string MaVar = "aa"
    end class
     
    Dans ta page :
     
    dim maMaster_ as MaMasterPage = page.master ' ne pas oublier le casting en c#
    msgbox(maMaster_.MaVar)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Je te remerci pour ta réponse rapide !

    Cependant, je suis vraiment un gros débutant en ASP .net ainsi que dans les languages MS.

    Pour couronner le tout, je suis completement seul pour me former, donc ça aide pas ^^

    Tous ça pour dire que je n'ai pas bien compris ta solution, désolé...

    - Qu'est ce que je met comme code à quel endroit ? (quel fichier, entres quels accolades...) ?
    - comment je peut traduire ça en C# simplement ?

    Merci beaucoup pour toutes ces précisions !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Bon, je croix que j'ai compris, mais comme ça marche pas, j'en suis pas sure...

    Voilà ce que j'ai fait :

    gabarti.master.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    using [...]
     
    public partial class gabarit : System.Web.UI.MasterPage
    {
     
      public String mavariable;
     
      protected void Page_Load(object sender, EventArgs e)
      {
     
        // pleins de jolis traitement...
     
        mavariable = "resultat de mes jolis traitements";
     
      }
     
    }
    default.aspx.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    using [...]
     
    public partial class pageIndex : System.Web.UI.Page
    {
     
      protected void Page_Load(object sender, EventArgs e)
      {
     
        gabarit gabaritMaster = new gabarit();
     
        String mavariable = gabaritMaster.mavariable;
     
        monControlLiteral.Text = mavariable;
     
      }
     
    }
    Et le résultat, c'est que mavariable est vide...

    ai-je mal compris ce qu'il fallais faire ? m'y suis-je mal pris ?

    Merci beaucoup pour votre aide !

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Change juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public partial class pageIndex : System.Web.UI.Page
    {
     
      protected void Page_Load(object sender, EventArgs e)
      {
     
        gabarit gabaritMaster = page.master;
     
        String mavariable = gabaritMaster.mavariable;
     
        monControlLiteral.Text = mavariable;
     
      }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Je me retrouve avec l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CS0266: Impossible de convertir implicitement le type 'System.Web.UI.MasterPage' en 'gabarit'. Une conversion explicite existe (un cast est-il manquant ?)
    Visiblement un probleme de cast, comme tu le disait plus haut...

    alors j'ai tenté ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gabarit gabaritMaster = (gabarit)Page.Master;
    Mais ça me renvoi toujours un truc vide...

    Merci pour ton aide !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    J'ai fait quelques test, et je me suis rendu compte de plusieurs choses :

    1) le traitement que j'effectue dans le page_load du master me renvoi bien la valeur qui m'interresse. De plus, cette valeur est bien setté dans la variable

    2) par contre, avec ta méthode (ainsi que toute celles que j'ai pu tester) ce qui m'est renvoyé n'est pas la valleur que le traitement a setté, mais celle par défaut de la variable ! En effet, jusqu'a maintenant ça ne me renvoyais rien car je n'avais pas attribué de valeur par défaut, mais si je déclar la variable comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public String mavariable = "test";
    ça me renvoi la valeur par defaut quand je cherche à récupérer la variable avec ta méthode, et non celle que j'ai généré dans le load de la master page...

    Quel est l'élément qui m'échape ?

    Merci pour le temps que tu me consacre !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Arf... visiblement, ce problème ne parle pas à grand monde ^^

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Le load de ta page est appelé AVANT le load de ta master Page.

    Je pense que ton souci vient de la.

    Tu peux toujours instancier ta variable dans le init de la master page, qui est appellé avant le load de la page.

    Ca se passe comme ca :
    page.init
    Masterpage.init
    page.load
    Masterpage.load

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Super, merci beaucoup !

    je me doutais bien qu'il y avais un truc dans ce gout là...

    Bon... Par contre, comment on fait pour créer le bloc init ?

    [EDIT]
    Bon, ma question étais stupide, désolé, j'ai simplement rajouté Page_Init et ça marche ^^

    Par contre, ça me pose plein de questions :

    Quel est la différence entre l'utilisation du load et de l'init ? est ce juste une question d'ordre ? ça change quelque chose au niveau des performances ? quels sont les différentes choses qui ce chargent entre tous ces évenements ? etc etc... ^^

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Ben comme le page load

  12. #12
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 159
    Par défaut
    De la même façon que pour le Page_Load

    protected void Page_Init(....

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Citation Envoyé par Assimil Voir le message

    Par contre, ça me pose plein de questions :

    Quel est la différence entre l'utilisation du load et de l'init ? est ce juste une question d'ordre ? ça change quelque chose au niveau des performances ? quels sont les différentes choses qui ce chargent entre tous ces évenements ? etc etc... ^^
    Il faut lire sur ce qui s'appelle le "cycle de vie d'une page aspnet".

    Tu as des tas de tutos bien fait.

    Comme tu le dis, les evenements sont lancés a des moments particuliers, et il se passe des choses entre chaque lancement d'evenement.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Merci, c'est ce qu'il me fallait ^^

    Merci pour toute l'aide qui m'a été apporté !

  15. #15
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Sinon je crois que tu peux aussi utiliser la méthode findControl pour récupérer les éléments de la masterpage

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Citation Envoyé par tortuegenie Voir le message
    Sinon je crois que tu peux aussi utiliser la méthode findControl pour récupérer les éléments de la masterpage
    Oui... Si je cherchais à récupérer la valeur d'un controle. Ce qui n'est pas le cas...

    Comme je le disait, je cherchais à récupérer la valeur d'une VARIABLE ^^

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

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  2. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23
  3. [MySQL] Récupérer le résultat d'une requête dans une variable
    Par kryogen dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/10/2007, 14h29
  4. Réponses: 5
    Dernier message: 28/09/2007, 14h58
  5. Comment récupérer le contenu d'une URL dans une variable ?
    Par Fildz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/08/2006, 09h26

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