ASP.NET et notion d'objet

Signaler
Messages postés
69
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
19 mars 2009
-
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
-
Bonjour tout le monde,

je débute dans ASP.NET mais j'ai pas mal de notion sur l'orienté objet, et puisque gérer du code C# c'est carrémment de l'objet.
Mais j'ai rencontré le pb suivant en raisonnant de cette maniére .


quand je déclare un objet défini dans une page Objet1.cs


Objet1 est déclaré comme variable dans MaPage.aspx qui hérite de System.Web.UI.Page


-variable lorsque MaPage.aspx est charge j'instancie objet1.


-je crée un boutton Valider et je lui associe un envent System.Web.UI.ImageClickEventArgs e


qui et dans la fonction valider je reprend objet1 pour récuperer ses valeurs mais l'objet 1 n'est plus instancié


et ça me crée un sacré probléme est ce que quelqu'un voit comment retrouver les valeurs de l'objet dans la fonction Valider ?

blueangel13

6 réponses

Messages postés
69
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
19 mars 2009

je vais reformuler le problème avec un exemple!
j'ai une classe Objet1 défini comme suit
public class CObjet1
{
private int Nbre;
public int nbre
{
get { return Nbre; }
}

Maintennant dans ma classe MaPage.aspx
public class MaPage: System.Web.UI.Page
{
private CObjet1;

private void Page_Load(object sender, System.EventArgs e)
{
CObjet1 Nombre = new CObjet1 ();
Nombre.SetValeur(20);

....
}

dans la fonction associé aux boutton de Validation je retrouve plus les valeurs de l'objet nombre

private void Valider_ServerClick(object sender, System.Web.UI.ImageClickEventArgs e)
{
int a;
a=Nombre.nbre; ???? la valeur Nbre elle est égale a Null
!!

Malgré que c'est une variable de la classe MaPage !!

Vous Voyer un peu le problème!

blueangel13
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Merci d'avoir mis un exemple car avec le texte seul on etait assez embeté



Malheureusement ton code n'est pas complet :( et je suis pas sur d'avoir tout compris. C'est qui qui fait ca ? Valider_ServerClick




Mais je pense quand meme avoi cerné le problème. J'ai fait une source la dessus, je suis en VB.net voici ce que ca donnerais.



private property Nombre as integer

get

return cint(viewstate("nombre"))

end get

set(value as integer)

viewstate("nombre") = value

end set

end property



Si tu veux des explications sur le problème, et pourquoi je te propose
cette solution, demande moi, j'ai pas trop le temps de t'expliquer


<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr
Messages postés
69
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
19 mars 2009

Est ce que tu peux m'expliquer d'avantage la notion de l'utilisation de Viewstate parce que ça reste encore pas très claire dans ma tête !! ou sans trop t'embêter juste une adresse de bonne doc sur cette partie en asp.net
Merci!

blueangel13
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
As tu va ma source qui parle du viewstate ? cherche dans mes sources sinon.



En quelques mots, quand tu charges une page aspx, a chaque requete le
serveur compile la page envoie la réponse, et t'oublie, si tu fais un
postback (click sur un bouton) le client refait une requete, recompile
la page (il voit qu'un bouton a été cliqué quand meme) et te renvoie le
contenu, a chaque requete le serveur ne sait pas que c'est le meme
client, il créer une novelle instance de la classe a chaque fois, donc
toutes tes variables sont perdus.



Pour garder tes variables, il existe principalement deux solutions, les
stockés dans une variable session, ou dans le viewstate.

Le viewstate, c'est une instance de la classe StateBag: un
dictionnaire, quand le serveur compile la page, il regarde le contenu
du viewstate, il sérialize tout ca, le code en 64bits, et l'ecrit dans
la page, dans le champ caché "__viewstate", ensuite quand ut fais un
postback, le serveur regarde le contenu de ce champ caché, et puis
recharge le viewstate :)

<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr
Messages postés
69
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
19 mars 2009

Merci Cyril pour ce coup de main je tâcherais de regarder ta source!

blueangel13
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
Salut,

En fait il existe plusieurs solutions pour garder un objet en "mémoire" entre appels d'une page aspx:
- le viewstate :
disons que tout ce que tu mets dans le viewstate va être intégré dans ton formulaire web dans un champs de type hidden.
Le problème c'est que si tu mets es grosses données, les aller-retours client/serveur vont être ralentis.

- Vairables sessions/application
ou
- Le cache.
Dans les deux cas la mémoire du serveur est utilsée (ouaip, bon, pas exactement car tu peux utiliser une base de données, un fihcier xml, ...).

Je te laisse chercher sur le web un descriptif de chacune des solutions pas le temps d'entrer dans les détails.... j'ai faim .

Désolé :(