cs_blueangel
Messages postés69Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention19 mars 2009
-
21 févr. 2005 à 10:14
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 2010
-
24 févr. 2005 à 19:51
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 ?
cs_blueangel
Messages postés69Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention19 mars 2009 21 févr. 2005 à 13:56
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 !!
cs_blueangel
Messages postés69Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention19 mars 2009 22 févr. 2005 à 09:20
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!
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 22 févr. 2005 à 13:26
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 :)
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 24 févr. 2005 à 19:51
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 .