Comment puis-je actualiser une page web sans renvoyer l'information?
J'ai un asp.net application et lorsque j'actualise une page web qui est produite après un formulaire est soumis.
Exemple:
<form name="myform" action="mypage.aspx" method="post">
puis le message d'alerte suivant apparaît.
"La page ne peut pas être actualisée sans renvoyer les informations.
Cliquez sur Réessayer pour Envoyer l'information de nouveau,
ou cliquez sur Annuler pour revenir à la page que vous étiez en train de vue."
Avec deux boutons:
Réessayez Annuler
Comment puis-je éviter l'alerte ci-dessus et de prendre "Annuler" en tant que par défaut & actualiser immédiatement?
Merci
Jeff
- Vous pouvez stocker l'information qui a déjà été envoyée ensuite effectuer une redirection au lieu d'une actualisation.
- +1 @Brad, de cette façon, les données ne peuvent être stockées en deux fois, soit. Donc c'est aussi plus sûr.
- Oui.. mais si l'utilisateur appuie sur la touche F5?
- Personnellement, j'ai toujours stocker les informations de quelque part et de rediriger la page, de sorte que le dos/actualiser les boutons de ne pas donner un comportement inattendu
- Puis il va recharger la page qui a été redirigé vers, avec pas de données POST - donc, sans problèmes ou des boîtes de message.
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser la "Redirection Après-Post" modèle. Google pour plus d'info. Mais, fondamentalement, sur le formulaire de soumission de votre serveur envoie une réponse de redirection vers le client, qui récupère ensuite cette page. C'est la meilleure pratique pour éviter le problème que vous voyez: vous n'avez pas reçu ce message ennuyeux sur le rafraichissement de la page, le bouton de retour n'est pas "cassé" et il prévient double soumission. Vraiment chaque formulaire sur votre site, devrait mettre en œuvre ce modèle.
Ici sont un couple de questions sur la mise en œuvre de asp.net:
Comment utiliser ASP.NET avec "Redirection après le POST" modèle? [Édité]
Redirection Après le Post en ASP.NET MVC
Comme je l'ai mentionné dans un commentaire, vous pouvez stocker la dernière présentation dans une variable (comme la session), puis utilisez une redirection de re-visiter la page. Un "refresh" classique va effectuer la dernière option, alors maintenant, façon de "rafraîchissant sans soumettre".
Mais, selon ce que vous voulez réaliser, vous pouvez également utiliser un UpdatePanel et "Actualiser" la page (ou, à toutes fins et intentions, de le faire apparaître comme si il est actualisé).
EDIT: Si l'utilisateur appuie sur la touche F5, puis d'empêcher que l'action (si c'est impératif). Effectuer toutes les mesures dont vous avez besoin sur la page initiale de visite, puis l'auto-rediriger vers un "Résultat" de la page. De cette façon, toutes actualiser actualise simplement un "statique" (déjà généré par/action réalisée) de la page.
Jeff,
J'ai eu ce même problème hier avec un multi-paginé forme (4 séparer les étapes). Ce que j'ai fait en fin de compte a été créé un "gestionnaire de fichiers" et utilisé que pour traiter les données publiées, puis effectué une redirection vers la page que je voulais. Cette compteurs de le "renvoyer" problème tant que les données ne sont jamais publié sur une page qui est dédiée à la transformation.
Mon Formulaire HTML:
Dans mon gestionnaire.asp:
J'espère que cela est utile. Bonne chance
Jeff,
D'étendre les commentaires ci-dessus:
Soit changer le
à:
... ou le faire manuellement, de façon à ne pas compromettre la sécurité de l'ur de données.
Dire que vous avez une connexion pour avec deux zones de texte user/pass.
Vous pouvez créer une structure de classe avec cette information, puis de générer un GUID aléatoire.
faire quelque chose comme:
et puis:
puis sur le Page_Load:
Bien sûr, c'est trop simplifié exemple, mais vous pouvez F5 vous tient à cœur.