Question

Est-il possible d'empêcher un paramètre d'action de conserver sa valeur dans les requêtes?

[HttpPost]
public ActionResult MyAction(string value1, string value2)
{
        if(value1=="hi")
             ModelState.AddModelError("value1", "Can't have hi");
        //do stuff
        if(ModelState.IsValid)
           return RedirectToAction("Finish");
        else
           return View()
}


[HttpGet]
public ActionResult MyAction()
{
        return View()
}

La vue consiste en un formulaire simple avec deux zones de saisie (valeur1 et valeur2). Une fois soumis et la validation échouant, la vue est renvoyée. Je souhaite que la valeur de la zone de texte de la vue soit toujours vide.

La valeur de la zone de texte " valeur1 " est conservé si le modèle est invalidé.

J'ai essayé de déclarer la zone de texte comme <% = Html.TextBox (" value1 " ;,, null)% > mais la valeur est toujours conservée. J'ai aussi essayé d'utiliser [Bind (Exclude = & Quot; valeur1 & Quot;)]], mais cela ne fonctionne pas avec une seule variable.

Mise à jour 2:

Je le fais pour une zone de texte utilisée pour l'entrée Captcha (solution personnalisée). Je souhaite que la zone de texte soit effacée chaque fois que la page est chargée, mais je souhaite que la validation reste.

Était-ce utile?

La solution

Essayez d'appeler

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

avant de retourner la vue depuis l'action de votre contrôleur.

Cela permet de conserver toutes les erreurs associées à la clé " valeur1 " ;, mais de remplacer la valeur par une valeur vide.

Autres conseils

Qu'est-ce que vous faites qui fait qu'il soit retenu? ViewState dans MVC est le seul élément qui permette de conserver une valeur sur plusieurs demandes, à moins que vous n'écriviez du code ou utilisiez des champs de formulaire pour le faire.

À quoi ressemble la vue? Cette méthode d'action est-elle appelée via GET ou POST? Quel est le & "Faire des choses &"; contenu dans votre méthode?

Modifier: vous affichez toujours // faire des choses dans votre exemple de code. Est-ce que ça contient des références à ViewData? Votre question concerne la liaison, mais je ne vois aucune liaison en cours. Peut-être que cela dépasse mon entendement.

Modifier 2: Je suis heureux que Phil ait vu celui-ci! La question initiale ne mentionnait pas le ModelState.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top