Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1146 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Résolu][ASP.NET][C#] Heritage et partage de variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu][ASP.NET][C#] Heritage et partage de variable

n°1903190
fatloui
I'll be back
Posté le 07-07-2009 à 14:41:59  profilanswer
 

Bonjour,
 
Petite question existencielle.
 
J'ai créé 2 pages aspx et je veux que mes methodes en c# partage des variables.
 
Certain me diront :"Malheureuse ! T'as qu'à faire une classe mere" ou un truc du genre.
 
Mais je vois pas comment faire vu que mes classes sont des "public partial class Acceuil : System.Web.UI.Page"
 
Merci pour votre aide


Message édité par fatloui le 09-07-2009 à 15:56:15
mood
Publicité
Posté le 07-07-2009 à 14:41:59  profilanswer
 

n°1903505
fatloui
I'll be back
Posté le 08-07-2009 à 11:41:51  profilanswer
 

En fait je veux qu'elles partagent des données.
 
une des pages passe un booléen à true et je veux que l'autre page puisse verifier si ce booléen est à true
 
Dans les 3 possibilités proposées, j'optais pour la 2eme.
 
Je peux donc declarer une classe static dans un des fichiers aspx.cs et l'appeler dans une autre page mais j'ai un probleme de droit.
 
pourtant ma classe est public
 
CS0122: 'Projet.test.test()' est inaccessible en raison de son niveau de protection

 
edit : probleme résolu j'avais oublié de mettre mon constructeur public


Message édité par fatloui le 08-07-2009 à 11:44:10
n°1903523
fatloui
I'll be back
Posté le 08-07-2009 à 11:54:32  profilanswer
 

rhaaaaa non en fait ca marche pas
 
la classe static n'est pas reconnu dans l'autre pages .aspx.
 
Que faire :( ?

n°1903524
fatloui
I'll be back
Posté le 08-07-2009 à 11:55:32  profilanswer
 


non non a pu constructeur.
 
en fait j'avais d'abord testé avec un classe normale puis apres avec une classe static

n°1903536
fatloui
I'll be back
Posté le 08-07-2009 à 12:05:37  profilanswer
 

ben en fait le namespace est le meme.
Visual studio reconnait la classe car il me l'a propose
 
mais lorsque je compile j'obtiens cette erreur :  
[quoted]
Message d'erreur du compilateur: CS0103: Le nom 'test' n'existe pas dans le contexte actuel
 
Erreur source:
 
 
 
Ligne 18 :         protected void Page_Load(object sender, EventArgs e)
Ligne 19 :         {
Ligne 20 :              
Ligne 21 :  
Ligne 22 :             Label1.Text = "test" + test.testou;
 
[/quoted]
 
sinon  mon code est le suivant

Code :
  1. public static class test
  2.     {
  3.         public static int testou = 0;
  4.     }


 
et je l'appelle comme ca

Code :
  1. test.testou = 1;


 
je pense pas que le probleme vienne de la
 
edit : pardon pardon je sais ou est l'erreur
VS nous assiste tellement que je deviens attardé

Message cité 1 fois
Message édité par fatloui le 08-07-2009 à 12:07:35
n°1903540
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 12:09:36  profilanswer
 

Le problème de ta classe statique c'est que tout les utilisateurs de ton site partageront le même objet avec du coup les mêmes valeurs.
 
Enfin c'est ptet ce que tu veux [:spamafote]
 
Pourquoi pas ne pas instancier un objet et le stocker en session? (si c'est par utilisateur)

n°1903541
fatloui
I'll be back
Posté le 08-07-2009 à 12:10:48  profilanswer
 

ov3rflow a écrit :

Le problème de ta classe statique c'est que tout les utilisateurs de ton site partageront le même objet avec du coup les mêmes valeurs.
 
Enfin c'est ptet ce que tu veux [:spamafote]
 
Pourquoi pas ne pas instancier un objet et le stocker en session? (si c'est par utilisateur)


non c'est bien pour tout le monde avec les meme valeur
 
par contre je pensais qu'ajouter une fonction get allait resoudre mon probleme mais en fait non j'ai la meme erreur

n°1903544
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 12:15:21  profilanswer
 

Regarde la casse :whistle:

 

Edit: non rien, j'ai mélangé les deux code

 


Ou est définie ta classe "test" ? c'est surement le début de ta réponse


Message édité par ov3rflow le 08-07-2009 à 12:17:53
n°1903571
fatloui
I'll be back
Posté le 08-07-2009 à 13:15:45  profilanswer
 

alors. dans page1.aspx.cs
 

Code :
  1. namespace MonProjet
  2. {
  3.     public static class test
  4.     {
  5.         public static int testou = 0;
  6.         public static int gettestou()
  7.         {
  8.             return testou;
  9.         }
  10.     }
  11.     public partial class Page1 : System.Web.UI.Page
  12.     {
  13.         protected void Page_Load(object sender, EventArgs e)
  14.         {
  15.             test.testou = 1;
  16. }
  17. }
  18. }


 
dans page2.aspx.cs

Code :
  1. namespace MonProjet
  2. {
  3.     public partial class Page2 : System.Web.UI.Page
  4.     {
  5.         protected void Page_Load(object sender, EventArgs e)
  6.         {
  7.             Label1.Text = "test" + test.gettestou();
  8.             Label1.Visible = true;
  9.         }
  10. }
  11. }


Message édité par fatloui le 08-07-2009 à 13:18:10
n°1903598
fatloui
I'll be back
Posté le 08-07-2009 à 14:15:42  profilanswer
 


ah ben m*erde
 
non ca marche pas chez moi
 
Message d'erreur du compilateur: CS0103: Le nom 'test' n'existe pas dans le contexte actuel
 
c'est hebergé sur un serveur IIS mais ca devrait pas changer grand chose...

mood
Publicité
Posté le 08-07-2009 à 14:15:42  profilanswer
 

n°1903603
fatloui
I'll be back
Posté le 08-07-2009 à 14:21:09  profilanswer
 

juste pour la deuxieme
 
edit : juste celle qui n'a pas la classe static


Message édité par fatloui le 08-07-2009 à 14:21:26
n°1903611
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 14:32:58  profilanswer
 

Ouaip, car c'est surement un projet site web, ou chaque page est compilée séparément.
 
Fred82 tu n'as pas le problème car tu fais un projet application web, non ?
 
 
Dans ta page 2 tu dois mettre une référence à la page 1, pour qu'il puisse trouver ta classe "test"


Message édité par ov3rflow le 08-07-2009 à 14:33:33
n°1903624
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 14:47:02  profilanswer
 


 
 
A partir de Visual Studio 2005 "File > New > site web"
 
L'application web a été ajouté avec le SP1 d'ailleurs, l'application web était sensé disparaitre il me semble
 
 
 
fatloui, essai de mettre une référence a ta page avec la directive suivante: <%@ Reference Page="~/Page1.aspx"> dans la page 2
 
 
Ensuite:      
 

Code :
  1. Page1.test.testou = 1;

Message cité 1 fois
Message édité par ov3rflow le 08-07-2009 à 14:50:44
n°1903631
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 14:59:23  profilanswer
 

  


Non non, la première version de Visual Studio 2005, pour faire du web y'avais que le "Site Web" de dispo. Mais migrer d'un solution application web vers site web c'était la misère (pour les sites complexes). Y'a donc eu le sp1 qui a remit l'application web de dispo.

 

Dans un site web, Les pages sont toutes compilés séparément et indépendamment. Ce qui a ses avantages.
Le site web apporte d'autres choses par rapport a une application web. Ce n'est pas "pourri" ;). Moi personnellement quand j'ai le choix, je préfère le site web que l'application.

 


Message édité par ov3rflow le 08-07-2009 à 14:59:49
n°1903643
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 15:16:05  profilanswer
 

Ya un petit tableau la:
http://msdn.microsoft.com/en-us/li [...] app_topic5

 


Sinon j'ai trouvé ça:

 

Ya matière a lire:
http://www.codersbarn.com/post/200 [...] oject.aspx

  

Moi ce que j'aime bien c'est de pouvoir dropper les sources sur iis sans avoir eu a compiler, et pouvoir dropper des modifs sans interruption du service.
Du coup tu peux juste livrer le .cs que tu as modifié(en mode compilation dynamique) ou la dll de ta page (en mode précompilé)

 

Aprés c'est sûr c'est pas adapté a tous les environnements.


Message édité par ov3rflow le 08-07-2009 à 15:26:31
n°1903655
fatloui
I'll be back
Posté le 08-07-2009 à 15:25:19  profilanswer
 

Genial ca fonctionne !! Merci pour votre aide ^^

n°1903675
fatloui
I'll be back
Posté le 08-07-2009 à 15:36:14  profilanswer
 

c'est encore plus fort que prevu
 
je peux acceder aux variables publiques de Page1 donc pas besoin de classe static.
 
Ben encore merci ^^

n°1903690
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 15:42:48  profilanswer
 

La question qu'on peut se poser: est ce vraiment propre ? :whistle:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [Résolu][ASP.NET][C#] Heritage et partage de variable

 

Sujets relatifs
PL/SQL : utilisation de variable pour liste de valeur dans requête[résolu] Activer la lib GD - IIS - PHP
Convertir CSV en SLK En Cvariable vba et fonction excel
[Résolu]VBA comment optimiser l'utilisation CPU dans un loop?[Resolu]Adaptation programme Windows vers Linux
configurer mon projet C avec ODBC et Mysqlconfigurer mon projet C avec ODBC et Mysql
connecter à une base de données Mysql via ODBC à partir du C[RESOLU] Problème de vérouillage dans ma feuille excel
Plus de sujets relatifs à : [Résolu][ASP.NET][C#] Heritage et partage de variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR