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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C# et VB .net] Problème de viewState

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C# et VB .net] Problème de viewState

n°1406230
zefree93
Posté le 13-07-2006 à 11:44:58  profilanswer
 

Bonjour,
Voilà j'ai un souci qui m'est apparu
C'est vraiment simple mais ça ne marche pas.  
 
J'ai un control ascx sur lequel j'ai un label et un bouton.
 
Le text de ce label est défini dans le code behind dans Page_Load si !ispostback
Quand je click sur mon bouton je récupère le onClick (je ne fais rien dedans (c'est pour l'exemple))
jusque là tout va bien le label garde son text meme si la page est reload
 
Ensuite j'ajoute un attribut de class. de type String.
Je le value tout comme mon label dans le Page load si !ispostback
Par contre lorsque je click sur le bouton, la valeur que j'avai affecté à ce string disparait !
Je me retrouve dans l'évènement onClick avec un string vide.
 
Je ne comprend pas du tout
Merci de votre aide

mood
Publicité
Posté le 13-07-2006 à 11:44:58  profilanswer
 

n°1406302
_Mose_
Lonesome coder
Posté le 13-07-2006 à 13:43:11  profilanswer
 

Normal.
Ton Label est un WebControl, dont la valeur est automatiquement (merci ASP.Net) maintenu avec le ViewState.
La valeur de ta string (à ce propos, veut mieux dire "champ" que "attribut" de classe : attribut en .Net c'est autre chose), n'est pas maintenue.
Le principe d'une appli web, c'est que tout est détruit et reconstruit à chaque aller/retour serveur. Donc quand ASP.Net recréé ton objet, il ne peut pas se souvenir de la valeur de ta chaine.
 
Solution 1 : mettre le chargement de ta chaine hors du bloc if(!this.IsPostBack)
Solution 2 : maintenir ta chaine dans le ViewState :

Code :
  1. // en postback
  2. if(!this.IsPostBack)
  3. {
  4.     // chargement de la chaine
  5.     string machaine= ...
  6.     // on la stocke dans le ViewState
  7.     ViewState["machaine"] = machaine;
  8.     ...
  9. }
  10. else // si on est en postback
  11. {
  12.     // on regarde si la valeur est bien dans le ViewState
  13.     object obj = ViewState["machaine"];
  14.     // si oui
  15.     if(obj != null)
  16.         // on charge la valeur de la chaine
  17.         machaine = obj.ToString();
  18. }

n°1406388
zefree93
Posté le 13-07-2006 à 15:00:28  profilanswer
 

ok je te remercie

n°1406613
moi23372
Posté le 13-07-2006 à 18:39:37  profilanswer
 

ou passer par des variables de session, c'est encore mieux.
 
Session["nomvariablesession"] = "blablabliblibblublu";
 
et pour récupérer au prochain passage
 
string ch = Session["nomvariablesession"];
 
ou nomvariablesession peut être n'importe quoi :D


Message édité par moi23372 le 13-07-2006 à 18:40:35
n°1406631
_Mose_
Lonesome coder
Posté le 13-07-2006 à 19:20:09  profilanswer
 

Question de philosophie... et d'environnement !
Je n'ai jamais vu l'utilisation du ViewState bloquée en contexte professionnel, alors que les Session assez souvent
Mais bon.. tant que ça marche.


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

  [C# et VB .net] Problème de viewState

 

Sujets relatifs
[Résolu][SQL] Problème classement ASC/DESC sur VARCHARProbléme d'ASP
problème de connection du a un plugin[Résolu] Problème de droit en lecture! [move_uploaded_file()]
Probleme arrondissementproblème : mktime et date
Problème passge MFC / Non MFCBloc - lien en a href/ problème de certification w3c
[rèsolu]probleme machine virtuelleProblème fichiers temporaires
Plus de sujets relatifs à : [C# et VB .net] Problème de viewState


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