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 :

Problème avec le isPostBack !


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut Problème avec le isPostBack !
    Bonjour,
    J'ai encore un peu de mal avec le principe du "ispostback", vos lumières seront les bienvenues !

    En gros, j'ai fait un simple bout de code qui envoi un mail ! Jusque là ça va ! Il y a un formulaire avec les données, et à l'évenement Clic, le code ci dessous est exécuté.
    Le mail est bien expédié, mais le problème c'est que si l'utilisateur rafraichit la page, le mail est de nouveau envoyé.

    Du coup, je me dis qu'il doit y avoir une histoire de postback, donc je positionne mon if (voir en commentaire dans le code), mais du coup, plus rien ne s'exécute.

    Dans ma logique, au rafraichissement de la page l'évenement clic ne devrait pas être redéclenché ! Donc je ne comprends pas pourquoi l'email part.
    Sinon, y a t'il un moyen pour que dès l'envoi du mail traité on stope l'évenement ?

    Merci d'avance pour votre aide ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        protected void bt_SendMail_Click(object sender, EventArgs e)
        {
                try
                {
                    MailMessage email = new MailMessage(tb_ExpMail.Text, tb_DestMail.Text,tb_SujetMail.Text, tb_CorpsMail.Text);
     
                    SmtpClient clientSMTP = new SmtpClient("localhost");
     
         //           if (!IsPostBack)
                        clientSMTP.Send(email);
                }
                catch (Exception ex)
                {
                    message.Text = ex.ToString();
                }
     
     
        }

  2. #2
    Membre éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut
    Le problème c'est que si l'utilisateur raffraichit la page, le postback est réeffectué, ASP.Net pense donc que l'utilisateur a recliqué sur le lien.

    Si tu veut éviter ca, tu peux un Response.Redirect() sur la page avec un paramètre, comme ca, si l'utilisateur raffraichit la page, les données POST ne sont pas renvoyées, et ASP.Net ne verra pas qu'il a raffraichit la page. Le paramètre étant là pour indiquer si l'envoi de mail s'est bien effectué par exemple

    EDIT : Un post back est bien entendu déclenché à chaque fois que tu clique sur le bouton envoyer et donc IsPostBack est true dans ce cas

  3. #3
    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
    Par défaut
    plus clairement, dans certains cas, que tu soit en asp.net ou en html ou quoi que ce soit, tu envoies une requete une serveur qui envoie des données (GET ou POST) (et qui declenche du postback justement).
    quand tu fais F5, tu dis au navigateur de renvoyer cette commande. c'est comme si tu reappuyait sur le bouton sur lequel tu venais de cliquer

  4. #4
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut
    Merci Messieurs,

    Si je comprends bien, de toute facon, dès que je clique sur le bouton, le postback s'effectue et c'est donc pour ça qu'avec le Not IsPostBack, le code ne s'exécutera jamais.

    Pour le Response.Redirect(), c'est une bonne idée, mais comment dois le mettre en place ? (juste pour l'action sur le bouton?)
    Je lui ré-indique ma propre page ...
    Mais puis je le faire sans forcément mettre un paramètre au bout ?
    Et cela pose t'il problème si j'ai des composants avec autopostback dans ma page ?

    Encore merci,

  5. #5
    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
    Par défaut
    t'as bien compris.
    quand tu arrives sur une page => Postback => false
    quand tu fais F5 => postback => potentiellement false
    quand tu cliques sur un bouton asp => postback = true
    quand tu sélectionnes une combo qui a autopostaback => reload +postback = true

    mais le autopostback ne déclenche un postback QUE SI tu touche à ce composant là.


    Pour le Response.Redirect(), c'est une bonne idée, mais comment dois le mettre en place ? (juste pour l'action sur le bouton?)
    Je lui ré-indique ma propre page ...
    oui, à la fin de la méthode de l'envoi de mail et tu renvoies vers ta page. il n'y aura alors aucune valeur post ou get

  6. #6
    Membre éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    oui, à la fin de la méthode de l'envoi de mail et tu renvoies vers ta page. il n'y aura alors aucune valeur post ou get
    Au pire (ce que j'aurait fait ) tu rajoute un élément GET à la fin de ton URL (c'est à dire tu rajoute "blablabla.aspx?mail=1" si le mail est OK ou "blablabla.aspx?mail=0" si pas OK)
    Tu peux récupérer le paramètre avec Request.QueryString["mail"] et pense à vérifier qu'il est pas null avant de faire quoi que ce soit avec

  7. #7
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut MERCI
    Ok,
    C'est testé et ça marche impeccable !

    Merci Louis-Guillaume,
    Merci mioux,

    C'est super,

    A+

  8. #8
    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
    Par défaut
    Citation Envoyé par mioux Voir le message
    Au pire (ce que j'aurait fait ) tu rajoute un élément GET à la fin de ton URL (c'est à dire tu rajoute "blablabla.aspx?mail=1" si le mail est OK ou "blablabla.aspx?mail=0" si pas OK)
    Tu peux récupérer le paramètre avec Request.QueryString["mail"] et pense à vérifier qu'il est pas null avant de faire quoi que ce soit avec
    j'ai pensé à ca aussi. histoire de signaler que l'action a réussi.

    en meme temps slokix, si tes utilisateurs font un F5, c'est des boulets :p

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

Discussions similaires

  1. [Débutant] problème avec isPostBack
    Par sivador dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/07/2012, 13h51
  2. Réponses: 2
    Dernier message: 02/08/2006, 16h46
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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