2009-11-20 6 views
5

Je me demande comment effacer les champs après une publication dans asp.net mvc? Comme pour le moment, lorsque des erreurs de validation se produisent, les champs restent affichés avec tout ce qu'un utilisateur aurait saisi. C'est correct cependant, quand aucune erreur de validation ne se produit, je veux effacer tous les champs et afficher un message.Comment effacer les champs après publication dans asp.net mvc?

Donc maintenant j'ai le succès d'affichage en utilisant ViewData, mais je ne sais pas comment obtenir les champs à effacer.

Répondre

0

Sons comme un travail pour le PRG (Post Redirect Get) pattern parce que vous ne voulez pas que les utilisateurs d'actualiser la page et l'ont soumettre à nouveau.

Pour ce faire, je voudrais mettre un message ou un drapeau dans votre TempData afin que vous puissiez l'inspecter lorsque vous redirigez vers l'URL d'origine pour ensuite afficher un message à l'utilisateur.

2

Phil Haack a déclaré:

Essayez d'appeler

ModelState["value1"].Value = new 
ValueProviderResult(null, 
string.Empty, 
CultureInfo.InvariantCulture); 

avant de retourner la vue de l'intérieur votre action du contrôleur.

Ce que cela fait est de garder toutes les erreurs associée à la clé « value1 », mais remplace la valeur avec une valeur vide.

From this SO question

-1

Vous pouvez affecter le modèle, nouvelle référence lorsque vous publiez votre modèle dans la vue.
Quelque chose comme ça.

if (ModelState.IsValid) 
    { 
     //Do your stuff here. 

     yourModel = new Moodel(); 
     return View(yourModel); 

    } 

Dans ce scénario, tous les champs du modèle seront vides et rien ne sera affiché au formulaire.

+0

Cela ne fonctionne pas, ModelState.Clear() ne porte toutefois –

8

Essayez ceci:

if(ModelState.IsValid) 
{ 
    ModelState.Clear(); 
} 
return View(); 
+0

pouvez également définir vos erreurs de ModelState après cette ligne :) – stuartdotnet

Questions connexes