Doublon au postback

gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007 - 6 mars 2007 à 17:35
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007 - 15 mars 2007 à 11:40
Bonjour,

Voilà j'ai un treeview ainsi qu'une formview sur ma page. Le principe est que quand je valide la formview ça ajoute une entrée dans une table (Oracle) et le treeview lit cette table. Le tout est intégré dans un updatePanel

Donc je rempli ma formview et je valide. Le postback se passe bien, je vois bien mon enregistrement dans mon treevien.
Le problème survient lorsque je fais F5 à la suite de ça. Je vois alors un dexième enregistrement apparaitre dans ma treeview et g bien sur la meme chose dans la table. J'en conclue que lorsque je fais F5 il republie exactement la même requete que la précédente. C'était prévisible mais comment empécher ce phénomène?

Merci de votre aide.

6 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
6 mars 2007 à 20:11
Oui quand tu fais F5 il te renvoie exactement la meme page, par contre si tu utilises un UpdatePanel le postback est invisible puisqu'il se fait via javascript donc en appuyant sur F5 la page se rafraichis mais de la meme facon que lors du vrais rafraichissement complet de la page, donc normalement tu devrais pas avoir de problème du genre si tu fais un AsyncPostBack ...

la solution pour éviter ce problème est de faire un response.Redirect sur la meme page :-/ et bien sur de sécuriser ta apge pour qu'on puisse pas faire trop d'insert

<hr />Cyril - MSP - MCTS ASP.net & SQL
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
6 mars 2007 à 21:38
Il me semble que Nikhil Kothari avait proposé une solution sur son site mais impossible de remettre la main dessus. En fait ça consistait à vérifier dans un module de type IHttpModule que la requete courante n'a pas le même header que la précédente.

Tu connais pas cette manip'?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
6 mars 2007 à 22:27
Ce que tu cherches de Nikhil c'est ca : http://www.nikhilk.net/BackButtonSupport.aspx mais je ne pense pas que cela résolvera ton problème. Ce qui est bizarre c'est que la touche back relance ton click sur le bouton alors que tu le fais dans un UpdatePanel, donc via un AsyncPostBack

<hr />Cyril - MSP - MCTS ASP.net & SQL
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
7 mars 2007 à 09:13
Non non c'est pas ça que je cherche. Ce que je cherche n'est pas un projet à lui mais simplement un morceau de code qu'il avait mis en guise de réponse au commentaire de quelqu'un sur un de ces articles. 

C'est vrai que c'est bizarre et ça mele fait sur toutes mes pages...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
7 mars 2007 à 11:29
Le problème est bien :

Tu as un gridview dans un UpdatePanel tu ajoutes une nouvelle ligne, l'UpdatePanel (et seulement lui) se met à jour, tu click sur le bouton précédent et il y a une nouvelle ligne d'inséré ?

<hr />Cyril - MSP - MCTS ASP.net & SQL
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 11:40
Non pas exactement.

J'ai un treeview et une formview. Les deux sont à l'intérieur dans UpdatePanel.

La formview sert à mettre à jour la treeview.

Si j'insère un élément dans mon treeview (via la forview), tout va bien. J'ai bien mon enregistrement qui s'est inséré dans le treeview. Maintenant si je fais F5, c'est à dire que je renvoie la même requete au serveur que la précédente, il me réinsere le même élément dans mon treeview.

En effet quand je mets un point d'arret dans la fonction qui insere l'enregistrement en base, il s'y arrete bien 2 fois.

Alors j'ai un peu regardé ce que je pouvais faire avec un ihttpmodule, mais c'est pas concluant pour le moment.
0
Rejoignez-nous