2010-10-07 15 views
1

Dans mon application Web, après avoir cliqué sur le bouton Soumettre dans un formulaire ASP.NET MVC, l'utilisateur affiche soit un écran Erreur, soit un écran Réussite. Dans le cas de l'erreur, l'utilisateur est invité à cliquer sur le bouton Précédent du navigateur et à corriger tout ce qu'il n'a pas fait correctement et à essayer de le soumettre à nouveau.ASP.Net MVC2 - Après la publication, comment effacer le formulaire si l'utilisateur touche le bouton Retour?

Cela fonctionne bien car lorsque l'utilisateur clique en arrière, toutes les données précédemment saisies sont toujours à l'écran dans les différents champs. Mais dans le cas de l'écran Réussite, je voudrais que les données soient effacées si l'utilisateur clique sur Retour, afin qu'elles ne puissent pas soumettre de nouveau les données accidentellement.

Comment cela se fait-il dans ASP.NET MVC?

Répondre

1

Pour ce faire, utilisez le modèle Post-Get-Redirect. Ce n'est pas spécifique asp-mvc mais Wiki dit

un modèle de conception commun pour les développeurs web pour aider à éviter certaines soumissions de formulaire en double et permettent aux agents utilisateurs de se comporter de manière plus intuitive avec des signets et le bouton de rafraîchissement.

Cliquer sur l'arrière n'est pas un moyen sûr de gérer cela. Certains navigateurs ne conservent pas l'état du formulaire après la soumission. Ce modèle répond directement au problème de données accidentally re-submit.

En termes de code, jetez un coup d'oeil à ce billet de blog par Jag Reehal concernant la façon de tester les contrôleurs unitaires.

[HttpPost] 
public ActionResult Create(SomeViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
    // do some stuff that saves your data and then... 
    return RedirectToAction("Success"); 
    } 
    else 
    { 
    // your model is not valid so return the form back to the user for 
    // additional modifications. 
    return View(model); 
    } 
} 

Note: alors que les utilisations ci-dessus ModelState pour la validation des données, vous pouvez avoir votre propre jeu de routines et validations de contrôle des erreurs qui peuvent également être utilisés dans ce modèle.

+0

Je l'ai déjà essayé et cela n'a pas fonctionné pour moi, mais peut-être que je fais quelque chose de mal. Laissez-moi essayer encore et revenir à vous. – Pretzel

+0

@pretzel - des progrès? – Ahmad

+0

Toujours pas de chance. Je vais essayer de reproduire ce que je suis en train de faire dans un projet de test (dépouiller tout le code inutile pour que je puisse vous montrer ce que je fais.) Je posterai dans quelques jours. Merci d'avoir vérifié sur moi! :) – Pretzel