[ASP.NET][C#] recuperer les variables de la master page

Bonjour,

j’ai 3 pages 1.aspx , 2.aspx, 3.aspx

J’ai une masterpage commune au 3 pages qui s’appelle ‘Maitre’

comme ces 3 pages peuvent etre appeler de differents facons, mais qu’elles ont toutes besoins d’un même environement de travail (initialisation d’objet ‘MonObjet’ par exemple). J’ai mis ce traitement dans le “page_load” de la master page.

comment puis je faire référence à ces variables dans les pages 1,2,3 (j’ai la syntaxe pour les controls de la master mais pas pour les variables)

j’ai bien cherché un truc comme :
this.master.MonObjet

mais bof…marche pô

merci

PS : SI il y a un truc plus mieux pour faire ca, n’hésitez pas…Je suis en phase de recherche

sont pas en private tes variables par hasard ? (une idée comme ca)

Non…mais la cafzone, c’est quand meme trop fort.

1 heure que je googlelise à fond

Je poste sur la zone

je regooglelise en désespoir de cause et hop

merci la zone qui apporte le bonheur et la joie dans les coeurs

=> Resumé

((maitre)Master).MonObjet

Voici un exemple, si tu as un composant sur la MasterPage :
Tu mets ce code dans le code behind.

Tu as encore plus simple, tu crées un accesseur de type get/set dans le code behind de ta Masterpage, et tu définit une virtualpath à tes 3 pages aspx vers ton Master.

En entete de ton fichier aspx fils :

Tu le mets juste après le <% @page machin… %>

Ensuite, dans le code Behind, il ne te reste plus qu’à faire un :

Merci.
2 syntaxes possibles
(avec virtualpath)
int li_etat = Master.initBO();

(sans virtualpath)
int li_etat = ((BO_Automation)Master).initBO();

tout allait bien depuis 2 jours, mais depuis ce matin…parfois, j’ai :

“Impossible d’effectuer un cast d’un objet de type ‘ASP.bo_automation_master’ en type ‘ASP.bo_automation_master’.”

ce qui est un comble !

ce n’est pas systematique et je n’ai a priori rien changé sur cette mécanique

Le namespace ASP est utilisé par ASP.NET lorsqu’il compile ton site (page,usercontrol,masterpage).

Exemple pour une page du type MaSuperPage. Lorsque ta page va être compilée par ASP.NET, une nouvelle classe sera créé avec :
Nom de la classe : MaSuperPage_ASPX
Dérive de : MaSuperPage
Namespace : ASP

Cette classe sera compilée et intégrée dans une assembly temporaire. Donc lorsque tu accède à un type via le namespace ASP, tu accèdes au type qui sera compilé par ASP.NET.

Il se peut que dans certains cas de recompilation tu te retrouves avec plusieurs assembly avec le type ASP.MaSuperPage en mémoire … et c’est là que tu peux avoir des message genre “ASP.MaSuperPage ne peut pas etre casté en ASP.MaSuperPage”. Car en fait c’est deux types différent définis dans deux assembly différentes.

La solution est d’évitée d’utiliser les types définis dans le namespace ASP mais d’utiliser les types que tu définis (dans notre exemple MaSuperPage).

(je sais pas si j’ai été très clair)

Sur l’explication du problème : Si (tu as été super clair) , et en plus ca me plait bien comme explication (je sentais bien le truc un peu sioux en mémoire)…

par contre sur la solution pour contourner le probleme, j’ai un peu plus de mal à comprendre…

IL faut utiliser le type MaSuperPage et non pas ASP.MaSuperPage_ASPX