IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Variables et postback


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Points : 122
    Points
    122
    Par défaut Variables et postback
    Bonjour,

    je rencontre un problème lors d'un postback,
    j'ai crée des variables hors du Page_Load sans les initialiser, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public partial class maClasse : System.Web.UI.Page
    {
              string _maVariableTexte;
              DateTime _maVariableDate;
              ...
    }
    Je ne peux donc pas utiliser de if(!IsPostBack), ni utiliser de variables de session (j'ai plusieurs objets que je veux garder comme tels).

    Le souci évidemment, c'est que lorsqu'un contrôle appelle le PostBack, mes variables retrouvent leur valeur à null.

    Quelqu'un possède une solution ou une idée ?
    Merci !

  2. #2
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    Le souci évidemment, c'est que lorsqu'un contrôle appelle le PostBack, mes variables retrouvent leur valeur à null.
    normal puisqu'il y a eu postback, donc réinitialisation des membres de ta classe.
    si tu ne veux pas stocker tes variables dans une session , utilise le viewstate

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Il n'y a pas de solution. Tous les champs des pages n'ont pas de persistance entre les différents postback.

    Un contournement est d'utiliser les différents mécanismes de gestion d'état de l'ASPNET : ViewState, Session, ... afin de conserver l'objet.

    Une autre possibilité est de recharger les données dont tu as besoin dans chaque pageload indépendamment d'un postback.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Points : 122
    Points
    122
    Par défaut
    Merci pour ces réponses si rapides,
    j'ai entendu parler du ViewState, sans trouver d'exemple concret pour cet exemple simple de variables...

  5. #5
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    quand tu initialisera tes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _maVariableTexte="un certain texte";
    faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (ViewState["montexte"] == null)
          ViewState["montexte"]="un certain texte";
     
    _maVariableTexte=ViewState["montexte"];
    pour une date ou un objet de quelconque type tu fais un cast sur ta variable viewstate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (ViewState["monobjet"] == null)
          ViewState["monobjet"]=new UnCertainObjet(....);
     
    _maVariableObjet=(UnCertainObjet) ViewState["monobjet"];
    je te laisse le soin de gérer les exceptions de type cast ou nullreference

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    sachant que le viewstate alourdi ta page. donc surveille ce point car proposer des pages de 300ko aux utilisateurs, c'est pas forcément la solution non plus
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  7. #7
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    sachant que le viewstate alourdi ta page. donc surveille ce point car proposer des pages de 300ko aux utilisateurs, c'est pas forcément la solution non plus
    effectivement puisque le viewstate "est" un champs type hidden sur la page
    asp.net offre plusieurs mécanismes pour gérer les états, chacun avec des défauts et des qualité, il faudra choisir ce qui te conviendra

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Points : 122
    Points
    122
    Par défaut
    Merci beaucoup, j'ai mis un peu de temps à l'adapter mais en tous cas ça fonctionne, et l'application n'a pas l'air plus lente pour autant !

  9. #9
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par Ashura95 Voir le message
    Merci beaucoup, j'ai mis un peu de temps à l'adapter mais en tous cas ça fonctionne, et l'application n'a pas l'air plus lente pour autant !
    c'est pas l'appli qui est lente, c'est le transfert de données. toi tu testes en local donc c'est normal que tu ne vois pas de différence. Mais en réseau et spécialement si ton application est disponible alors SI, forcément, ca aura une incidence.

    faut toujours se dire que la personne en face a p-e une connexion bas débit.
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  10. #10
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    si la quantité des données à stocker est relativement petite, la dite incidence ne sera pas visible.
    de toute façon dans toutes les méthodes qu'on pourra utiliser il y aura une incidence quelque part

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Variable Session retourne null lors d'un postback.
    Par jayce23 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/11/2014, 10h46
  2. Réponses: 1
    Dernier message: 08/01/2010, 17h28
  3. Postback, perte de variables
    Par Anox31 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 17/11/2009, 17h39
  4. la variable postBack
    Par Invité dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/11/2008, 11h25
  5. Réponses: 2
    Dernier message: 19/04/2005, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo