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 :
- // en postback
- if(!this.IsPostBack)
- {
- // chargement de la chaine
- string machaine= ...
- // on la stocke dans le ViewState
- ViewState["machaine"] = machaine;
- ...
- }
- else // si on est en postback
- {
- // on regarde si la valeur est bien dans le ViewState
- object obj = ViewState["machaine"];
- // si oui
- if(obj != null)
- // on charge la valeur de la chaine
- machaine = obj.ToString();
- }
|