Heritage et partage de variable [Résolu][ASP.NET][C#] - C#/.NET managed - Programmation
Marsh Posté le 08-07-2009 à 11:41:51
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
Marsh Posté le 08-07-2009 à 11:54:32
rhaaaaa non en fait ca marche pas
la classe static n'est pas reconnu dans l'autre pages .aspx.
Que faire ?
Marsh Posté le 08-07-2009 à 11:55:32
non non a pu constructeur.
en fait j'avais d'abord testé avec un classe normale puis apres avec une classe static
Marsh Posté le 08-07-2009 à 12:05:37
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 :
|
et je l'appelle comme ca
Code :
|
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é
Marsh Posté le 08-07-2009 à 12:09:36
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
Pourquoi pas ne pas instancier un objet et le stocker en session? (si c'est par utilisateur)
Marsh Posté le 08-07-2009 à 12:10:48
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. |
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
Marsh Posté le 08-07-2009 à 12:15:21
Regarde la casse
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
Marsh Posté le 08-07-2009 à 13:15:45
alors. dans page1.aspx.cs
Code :
|
dans page2.aspx.cs
Code :
|
Marsh Posté le 08-07-2009 à 14:15:42
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...
Marsh Posté le 08-07-2009 à 14:21:09
juste pour la deuxieme
edit : juste celle qui n'a pas la classe static
Marsh Posté le 08-07-2009 à 14:32:58
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"
Marsh Posté le 08-07-2009 à 14:47:02
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 :
|
Marsh Posté le 08-07-2009 à 14:59:23
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.
Marsh Posté le 08-07-2009 à 15:16:05
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.
Marsh Posté le 08-07-2009 à 15:36:14
c'est encore plus fort que prevu
je peux acceder aux variables publiques de Page1 donc pas besoin de classe static.
Ben encore merci ^^
Marsh Posté le 08-07-2009 à 15:42:48
La question qu'on peut se poser: est ce vraiment propre ?
Marsh Posté le 07-07-2009 à 14:41:59
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