2010-05-28 8 views
1

Comment procéder pour détecter une actualisation de page/une pression de touche F5 sur le contrôleur gérant la publication? J'ai besoin de distinguer entre l'utilisateur appuyant sur l'un des deux boutons (par exemple, Suivant, Précédent) et quand l'actualisation F5/page se produit.Détection de l'actualisation de page/clé F5 dans ASP.NET MVC 2

Mon scénario est une page d'assistant unique dont le contenu est différent entre chaque appel de l'utilisateur en appuyant sur les boutons "Suivant" ou "Précédent". L'erreur que je rencontre est lorsque l'utilisateur actualise la page/appuie sur la touche F5, le navigateur envoie de nouveau la demande au contrôleur, qui est traité comme un post-retour et le type FormCollection est utilisé pour rechercher le "submitButton" et d'obtenir sa valeur (par exemple, "Next", "Send"). Cette partie a été modelée après le poste par Dylan Beattie au How do you handle multiple submit buttons in ASP.NET MVC Framework?. Peut-être que j'essaye de plier MVC 2 là où il n'est pas destiné à aller mais je voudrais rester avec la conception actuelle en ce que la base de données sous-jacente conduit le contenu et l'ordre de ce qui est montré. Cela nous permet d'ajouter du nouveau contenu dans la base de données sans modifier le code d'affichage du contenu.

Merci, Michael

Répondre

4

La méthode recommandée est d'utiliser modèle PRG - Post-Redirect-Get. Signification: après la soumission, rediriger un client vers Index ou quoi, en ne provoquant que le rechargement de l'index lorsque l'utilisateur touche F5, sans afficher à nouveau les données.

Vérifiez ceci: http://en.wikipedia.org/wiki/Post/Redirect/Get

Et ceci: http://www.google.sk/search?q=prg+mvc+asp.net

+1

Pour mettre une autre façon ... Demandez à votre action du contrôleur renvoie un résultat RedirectToAction au lieu d'un résultat Affichage. – AaronSieb

+0

Votre deuxième lien fourni, j'ai trouvé le suivant http://www.eworldui.net/blog/post/2008/05/ASPNET-MVC---Using-Post2c-Redirect2c-Get-Pattern.aspx, qui montre clairement comment mettre en œuvre le modèle de conception PRG. Je l'ai déjà rencontré auparavant mais je ne l'ai jamais appliqué dans le contexte d'ASP.NET MVC 2. Après avoir parcouru cet exemple moi-même, je peux voir où j'ai besoin de faire mes ajustements pour montrer clairement la direction dans laquelle je dois aller . Merci pour votre réponse rapide et votre contribution! – Michael

+0

Merci AaronSieb, car je retournais une instance de View ("PageName", modèle). Juste comme un FYI supplémentaire, ma conception devait d'abord avoir deux méthodes nommées "Review", l'une étant un GET et l'autre un POST. Dans la méthode POST "Review", j'essayais de capturer quel bouton de soumission était pressé (par exemple, "Next" ou "Previous") et renvoyer un nouveau ActionResult à partir de l'une des deux méthodes auxiliaires correspondantes nommées "Next" et "Previous". Chacune de ces méthodes auxiliaires renvoie le contenu en fonction de la direction prise par l'utilisateur (par exemple, vers l'avant ou vers l'arrière dans l'assistant). Merci! – Michael