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 :

[ASP.NET 2.0] Passer une variable de la Page Maître à la page Default et la recharger


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut [ASP.NET 2.0] Passer une variable de la Page Maître à la page Default et la recharger
    Salut à tous,

    Voilà j'ai décidé de m'amuser un peu et j'ai "cassé" mon bon site web à peine terminé pour créer une Page Maître, composée d'un bandeau en haut contenant une TextBox et un Button.

    Je souhaiterai que lorsque l'on clique sur le bouton, le contenu de la TextBox soit envoyée en paramètre à la page Default.aspx et que celle-ci se recharge en conséquence.

    Déjà lorsqu'on clique sur le bouton le contenu de la TextBox est récupéré et placé en session (est-ce que d'aileurs le ViewState fonctionne entre deux pages?).

    Mais comment l'envoyer à la page Default et la faire se recharger?

    Merci pour votre aide.

  2. #2
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut
    tu peux récupérer directement le contenu de ta TextBox en faisant dans ta page Default.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TextBox)Master.FindControl("MaTextBox")).Text
    Stéphane
    "si tu n'as pas de réponse à ton pblm... c'est qu'il n'y a pas de pblm... "

  3. #3
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Citation Envoyé par stephane.net
    tu peux récupérer directement le contenu de ta TextBox en faisant dans ta page Default.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TextBox)Master.FindControl("MaTextBox")).Text
    Merci c'est pas mal du tout. Mais il me manque encore comment déclencher le rechargement (et le traitement de cette variable) de ma page Default.

    J'ai trouvé ça (chapitre "Master Page To Content Page Interaction") et ça correspond exactement à ce que je cherche mais... C'est en VB.NET Au moins je sais qu'il y a une histoire d'Event mais ce n'est pas encore quelque chose que je maîtrise parfaitement (voire par du tout d'ailleurs).

  4. #4
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut
    l'article est très sympas en effet Merci !

    Parcontre, peux-tu décrire un peu plus ce que tu essais de faire ?
    "si tu n'as pas de réponse à ton pblm... c'est qu'il n'y a pas de pblm... "

  5. #5
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Citation Envoyé par stephane.net
    l'article est très sympas en effet Merci !

    Parcontre, peux-tu décrire un peu plus ce que tu essais de faire ?
    Bah je ne vois pas trop ce que je pourrais dire de plus. L'article, qui parle d'une Textbox et d'un Button dans la master page, décrit exactement ce dont j'ai besoin : en cliquant sur le bouton Valider de ma MasterPage, le contenu de la textbox est envoyé à la page Default.aspx, et celle-ci se recharge en tenant compte de ça.

    Faut juste que je comprenne comment faire en C# :
    - Sur ma MasterPage : "Provoquer Evenement Click_Button sur la page Default avec en paramètre TextBox.Text".
    - Sur ma page Default : "Lancer Evenement Click_Button parce que la MasterPage me l'a demandé et prendre en variable le paramètre que la MasterPage vient de m'envoyer".

  6. #6
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut
    Effectivement la méthode avec les évênements de l'article est propre
    Mais je me lancerais dans son implémentation que si c'est vraiment nécessaire... (je débute également...)

    Parcontre :

    Dans le Page_Load de ta page Default.aspx, écris le code dépendant de la valeur de ta TextBox contenu dans le MasterPage avec l'instruction que je t'ai donné dans le post plus haut.

    Le seul fait de cliquer sur le boutton de ta MasterPage va provoquer le rafraichissement de toute la page et donc l'exécution de ce que tu aurras mis dans le Page_Load.

    Peut être que ça te suffira
    "si tu n'as pas de réponse à ton pblm... c'est qu'il n'y a pas de pblm... "

  7. #7
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Citation Envoyé par stephane.net
    Effectivement la méthode avec les évênements de l'article est propre
    Mais je me lancerais dans son implémentation que si c'est vraiment nécessaire... (je débute également...)
    Moi aussi je débute et je crains que ce soit nécessaire.

    Pour l'instant côté page Default j'ai ajouté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private string Variable = "";
     
        protected void Page_Init(object sender, EventArgs e)
        {
            Master.SendMaVariable += new EventHandler(MaVariable_Event);
        }
     
        protected void MaVariable_Event(object sender, EventArgs e)
        {
            Variable = e.Variable;
     
            Ce que la page Default doit faire...
        }
    Impossible de savoir si ça marche pour l'instant. Il faut maintenant que je m'attaque à la création de l'événement dans le MasterPage...
    Citation Envoyé par stephane.net
    Le seul fait de cliquer sur le boutton de ta MasterPage va provoquer le rafraichissement de toute la page et donc l'exécution de ce que tu aurras mis dans le Page_Load.

    Peut être que ça te suffira
    Je ne peux pas me permettre de placer mon code à exécuter dans le PageLoad. D'ailleurs à la première initialisation il lui manquerait la variable que doit envoyer la MasterPage. En outre ça ne serait vraiment pas "propre". Mais merci quand même.

  8. #8
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut
    sauf si tu place ton code en tenant compte de la propriété IsPostBack de ta Page...

    désolé je ne peux pas t'aidé plus mais je suis intéressé par cette méthode...

    Bon courage !
    "si tu n'as pas de réponse à ton pblm... c'est qu'il n'y a pas de pblm... "

  9. #9
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Maintenant côté MasterPage j'ai ça :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public partial class MasterPage : System.Web.UI.MasterPage
    {
        private string MaVariable;
     
        public event SendMaVariableEventHandler SendMaVariable;
     
        protected void Button_Click(object sender, EventArgs e)
        {
            MaVariable = TextBox1.Text;
            SendCMAU(this, MaVariable);
        }
    }
     
    public class SendMaVariableEventArgs : EventArgs
    {
        public SendMaVariableEventArgs(string MaVariable)
        {
            _MaVariable = MaVariable;
        }
     
        private string _MaVariable;
        public string MaVariable
        {
            get { return _MaVariable; }
            set { _MaVariable = value; }
        }
    }
     
    public delegate void SendMaVariableEventHandler(object sender, SendMaVariableEventArgs e);
    Plusieurs choses :
    - Est-ce que tant de choses ont besoin d'être "public"?
    - Je ne comprends rien du tout au cirque des get et set dans "public class SendMaVariableEventArgs : EventArgs". Est-ce que ça ne pourrait pas être simplifié?
    - Et au final j'ai l'erreur suivante : "Delegate 'SendCMAUEventHandler' has some invalid arguments".

    C'est pas gagné...

  10. #10
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Avant de laisser définitivement tomber (ce serait la première fois) et de revenir à une simple page Default sans MasterPage, je tente une ultime remontée de sujet...

  11. #11
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut
    je pense que les vacances n'arrangent pas les choses... j'ai deux sujets également qui patientes....
    "si tu n'as pas de réponse à ton pblm... c'est qu'il n'y a pas de pblm... "

  12. #12
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Gérer les events et les délégués en Csharp est l'un des concepts les plus complexes du langage. J'ai fait ce que tu voulais en Csharp, à savoir

    Définir une page maître avec un bouton et un textbox

    Lorsque l'on clique sur le bouton de la page maître, il appelle un évènement auquel une ou plusieurs page filles se serait abonné

    Dans ton app_code (pour que ce soit global à toute l'application) tu crées une classe comme ceci:

    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
    public class SendTextValueEventArgs : EventArgs
    {
        private string _value;
    //Constructeur
        public SendTextValueEventArgs(string TextValue)
        {
            _value = TextValue;
        }
    //Ascesseur
        public string TextValue
        {
            get { return _value; }
            set { _value = value; }//optionel, si tu ne souhaites qu'une interaction en lecture, retire-le
        }    
    }
    public delegate void SendTextEventHandler(object sender, SendTextValueEventArgs e); //Délégué pointant sur une méthode ayant
    comme prototype void(object sender,SendText...eventargs)
    Cette classe sert simplement à typer l'argument de l'event auquel les pages fills s'abonneront.

    Ceci fait, il est temps de déclarer un event public (pour que les pages filles puissent s'y abonner) au niveau de ta page maître (je le fais direct dans le code behind)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event SendTextEventHandler PublicEvent = null;
    SendTextEventHandler est le délégué que nous avons défini dans la classe qui est dans app_code

    Ensuite dans l'évènement lié à ton bouton tu fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if (PublicEvent != null)
            {
                EventArgs args = new SendTextValueEventArgs(TextBox1.Text);
                PublicEvent(this, (SendTextValueEventArgs)args);
            }
    Si aucun abonnement n'est fait, publicevent sera à null sinon il aura une ou plusieurs références (pointeurs sur méthodes)

    Dans le page_init de ta/tes page(s) filles tu fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void Page_Init(object sender, EventArgs e)
    {
            Master.PublicEvent += new SendTextEventHandler(GetTextValue);
    }
    Toujours dans ta page fille, tu crées la fameuse méthode GetTextValue comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void GetTextValue(object sender, SendTextValueEventArgs e)
        {
            Label1.Text = " Valeur de page maître " + e.TextValue;
        }
    Tu remarqueras que son argument "e" est typé SendTextValueEventArgs, càd la classe définie dans le app_code.


    En réalité, tu t'abonnes à l'évènement public défini dans ta masterpage.

    Gros avantage :

    Tu découples l'aspect graphique de ta masterpage de l'aspect "logique". Si ce n'est plus la valeur d'un textbox que tu dois envoyé mais celle d'une dropdown, tu n'as que l'event associé à ton bouton dans la master à changer peu importe le nombre d'abonnés.

    Et voilà, le tour est joué

    [Edit]
    Pour répondre à tes questions
    Plusieurs choses :
    - Est-ce que tant de choses ont besoin d'être "public"?
    Ce qui doit être public est ce qui sera utilisé par tes classes filles, à savoir, ton event et ta propriété

    - Je ne comprends rien du tout au cirque des get et set dans "public class SendMaVariableEventArgs : EventArgs". Est-ce que ça ne pourrait pas être simplifié?
    C'est ce qu'on appelle des propriétés aussi connues sous le nom d'ascesseurs. En fait, c'est une pratique courante en POO et ça sert à mieux gérer l'interaction qu'une instance peut avoir avec un membre de classe. Exemple

    si tu déclares un textbox en public comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public TextBox toto = null;
    Et que dans une instance tu fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.toto.Text = "toto";
    Ici tu aurais déjà une erreur car le textbox n'est pas instancié mais en plus, tu autorises implicitement l'accès en lecture/écriture à ton membre.

    En faisant ceci:

    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
    19
    20
    21
    22
    23
    private TextBox toto;
     
    public string TotoProp
    {
      get
      {
        if(toto != null)
        {
         return toto.Text
        }
      //Tu peux éventuellement mettre un contrôle quelconque ou
      // retourner une valeur concaténée etc...
      }
      set
      {
       //si tu veux seulement un accès en lecture, tu ne définis pas la partie "set"
         if(toto == null)    
         { 
          toto = new TextBox();
         }
         toto.Text = value; //value est un mot clé représentant la valeur transmise par l'instance
      }
    }


    [/EDIT]

  13. #13
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    J'ai une question bête :
    Sachant qu'une masterpage est un genre de "template" qui va enrober toutes les pages d'un site.
    * A quel moment et pour quelle fonctionnalité a-t-on besoin de récupérer des infos de la page contenue ?

    Je vois ça comme une grosse erreur de conception, étant donné que la master page est un genre de UserControl et que, par essence, un UserControl doit être indépendant des pages qui le contiennent (en tout cas c'est comme ça qu'on fait quand on code bien)

    Mais peut-être y'a-t-il des cas où ça se justifie. Ca m'intéresserait de les connaitre.

  14. #14
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut
    Merci Stephan...

    Mose, par exemple si tu as des contrôls pour modifier l'UICulture ? (c'est une question...)
    "si tu n'as pas de réponse à ton pblm... c'est qu'il n'y a pas de pblm... "

  15. #15
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Un million de mercis!

    Vu la complexité du truc je comprends que tout le monde ne se soit pas précipité pour me répondre. En fait je n'étais sans doute pas loin mais j'avais mal "traduit" en C# le code VB.Net de la page dont je m'étais inspiré...

    Maintenant ça marche presque, mais j'ai encore un soucis.

    Ça me dit :
    'System.Web.UI.MasterPage' does not contain a definition for 'PublicEvent'
    A propos de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        protected void Page_Init(object sender, EventArgs e)
        {
            Master.PublicEvent += new SendTextValueEventHandler(CMAU_Event);
        }
    Est-ce que ça peut être lié au fait que je n'ai pas mis la classe "public class SendTextValueEventArgs : EventArgs" dans App_Code mais la Master Page ? (en dessous de la classe partielle MaMasterPage).

    Si je créé dans App_Code un fichier de classe.cs à part, il faut que je créé un espace de nom et que je l'appelle dans la MasterPage et les autres pages, ou il y a un moyen de m'en passer ?

    Je ne comprends pas encore tout à la perfection mais tes explications m'ont aidé à y voir plus clair. Ça va m'aider à me plonger plus sérieusement dans la création des classes et dont ce qui en découle.

  16. #16
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par Mose
    J'ai une question bête :
    Sachant qu'une masterpage est un genre de "template" qui va enrober toutes les pages d'un site.
    * A quel moment et pour quelle fonctionnalité a-t-on besoin de récupérer des infos de la page contenue ?

    Je vois ça comme une grosse erreur de conception, étant donné que la master page est un genre de UserControl et que, par essence, un UserControl doit être indépendant des pages qui le contiennent (en tout cas c'est comme ça qu'on fait quand on code bien)

    Mais peut-être y'a-t-il des cas où ça se justifie. Ca m'intéresserait de les connaitre.
    En fait, c'est plutôt dans l'autre sens, la page contenue doit récupérer une info de la page contenante et le fait d'implémenter cela via un event permet justement d'éviter toute dépendance de l'un vers l'autre. Quand tu évoques un usercontrol, il est vrai qu'un usercontrol est une entité à part entière mais jsutement, le but et de la réutiliser et d'éventuellement adapter son comportement en fonction du contexte d'utilisation. Si tu crées un usercontrol avec deux textbox, tu peux tour à tour l'utiliser pour encoder des employés, des clients etc.... par ex et adapter le comportement du usercontrol en fonction des données que tu gères.

    Je ne comparerais pas une masterpage à un usercontrol, c'est juste un mécanisme permettant d'offrir un layout commun à une partie ou à toutes les pages d'une application. Qui dit layout commun peut aussi dire "interface" commune et de ce fait, propriétés, contrôles etc... éventuellement communs et exploitables par les pages contenues.


    Citation Envoyé par strat0
    Un million de mercis!

    Vu la complexité du truc je comprends que tout le monde ne se soit pas précipité pour me répondre. En fait je n'étais sans doute pas loin mais j'avais mal "traduit" en C# le code VB.Net de la page dont je m'étais inspiré...

    Maintenant ça marche presque, mais j'ai encore un soucis.

    Ça me dit :
    'System.Web.UI.MasterPage' does not contain a definition for 'PublicEvent'
    A propos de la ligne :

    Code :
    protected void Page_Init(object sender, EventArgs e)
    {
    Master.PublicEvent += new SendTextValueEventHandler(CMAU_Event);
    }Est-ce que ça peut être lié au fait que je n'ai pas mis la classe "public class SendTextValueEventArgs : EventArgs" dans App_Code mais la Master Page ? (en dessous de la classe partielle MaMasterPage).

    Si je créé dans App_Code un fichier de classe.cs à part, il faut que je créé un espace de nom et que je l'appelle dans la MasterPage et les autres pages, ou il y a un moyen de m'en passer ?

    Je ne comprends pas encore tout à la perfection mais tes explications m'ont aidé à y voir plus clair. Ça va m'aider à me plonger plus sérieusement dans la création des classes et dont ce qui en découle.
    Pour app_code, tu ne dois pas créer un espace de nom sauf si tu as isolé explicitement ta classe dans un autre espace de nom.

    Par contre, j'ai oublié de le préciser mais tu dois mettre cette directive dans ta content page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ MasterType VirtualPath="~/nomdetapagemaitre.master" %>
    ou explicitement dans le code récupérer ta masterpage comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MasterPage CurrentMaster = this.master as MasterPage;
    if(CurrentMaster != null)
    {
     ....
    }

  17. #17
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Citation Envoyé par stephane eyskens
    Par contre, j'ai oublié de le préciser mais tu dois mettre cette directive dans ta content page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ MasterType VirtualPath="~/nomdetapagemaitre.master" %>
    J'ai créé ma page Default.aspx en précisant d'emblée la MasterPage, donc en haut j'ai cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Page Language="C#" MasterPageFile="~/MaMasterPage.master" +d'autres trucs... %>
    J'ai beau tester en long en large, relire ton code 36 fois et vérifier scrupuleusement la syntaxe, je ne comprends pas pourquoi j'ai ce message d'erreur...

    Pourtant dans ma MasterPage j'ai bien ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public event SendCMAUEventHandler SendCMAU = null;
     
        protected void Valider_Click(object sender, EventArgs e)
        {
            //On récupère le n° de CMAU saisi par l'utilisateur et on l'envoit à la page Default en provoquant un événement de rechargement
            if (SendCMAU != null)
            {
                EventArgs ArgsCMAU = new SendCMAUEventArgs(CreateCMAU(TextBoxRecherche.Text));
                SendCMAU(this, (SendCMAUEventArgs)ArgsCMAU);
            }
        }
    Je me suis permis de donner un autre nom à PublicEvent, ce n'est pas un mot clef que je sache ?

    N.B : La fonction CreateCMAU prend un string en paramètre et renvoie bien un string.

  18. #18
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par strat0
    J'ai créé ma page Default.aspx en précisant d'emblée la MasterPage, donc en haut j'ai cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Page Language="C#" MasterPageFile="~/MaMasterPage.master" +d'autres trucs... %>
    J'ai beau tester en long en large, relire ton code 36 fois et vérifier scrupuleusement la syntaxe, je ne comprends pas pourquoi j'ai ce message d'erreur...

    Pourtant dans ma MasterPage j'ai bien ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public event SendCMAUEventHandler SendCMAU = null;
     
        protected void Valider_Click(object sender, EventArgs e)
        {
            //On récupère le n° de CMAU saisi par l'utilisateur et on l'envoit à la page Default en provoquant un événement de rechargement
            if (SendCMAU != null)
            {
                EventArgs ArgsCMAU = new SendCMAUEventArgs(CreateCMAU(TextBoxRecherche.Text));
                SendCMAU(this, (SendCMAUEventArgs)ArgsCMAU);
            }
        }
    Je me suis permis de donner un autre nom à PublicEvent, ce n'est pas un mot clef que je sache ?

    N.B : La fonction CreateCMAU prend un string en paramètre et renvoie bien un string.
    Non non c'est pas un mot clé. Par contre, ça ne suffit pas, tu dois manuellement ajouter la directive mastertype, si tu ne l'as pas, tu ne peux pas accéder aux propriétés, membres de ta masterpage

    Donc, comme je l'ai dit, ajoute ceci directement en dessous de ta première ligne de directive


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ MasterType VirtualPath="~/MasterPage.master" %>
    car ce n'est pas ajouté par VS. Tu dois soit faire comme ça, soit passer par une variable intermédaire comme j'ai montré dans mon post précédent

  19. #19
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    ?

    C'est idiot que VS ne le rajoute pas automatiquement...

    Mais en tout cas...

    ÇA MARCHE!



    Encore merci à toi. Que tes pas foulent des pétales de roses et que ta vie ne soit qu'ivresse!

  20. #20
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par strat0
    ?

    C'est idiot que VS ne le rajoute pas automatiquement...

    Mais en tout cas...

    ÇA MARCHE!



    Encore merci à toi. Que tes pas foulent des pétales de roses et que ta vie ne soit qu'ivresse!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/09/2010, 16h39
  2. ASP.net / c# acces a une variable dans une classe
    Par Angellus dans le forum ASP.NET
    Réponses: 11
    Dernier message: 29/04/2010, 15h18
  3. [ASP.NET 3.5] Appeller une variable serveur depuis un fichier js
    Par User.Anonymous dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/09/2009, 12h24
  4. [ASP.NET]Passer une variable
    Par WELCOMSMAIL dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2006, 09h38

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