Comment dois-je entretenir ModelState erreurs lors de l'utilisation de RedirectToAction?
J'ai un code qui permet d'économiser un billet dans notre système. Si il y a une erreur, il fait un RedirectToAction. Le problème est que je ne semble pas avoir mes erreurs dans la nouvelle action. Comment puis-je résoudre ce problème?
ModelState.AddModelError("_FORM", "Unable to save ticket");
ModelState.AddModelError("_FORM", "Phone number was invalid.");
ModelState.AddModelError("_FORM", "Lane number is required.");
return RedirectToAction("CreateStep", "Ticket");
Je sais que certains ont proposé d'utiliser TempData, mais comment aurais-je obtenir chaque erreur de la ModelState?
Grâce.
Vous devez vous connecter pour publier un commentaire.
Le PRG modèle est ok, mais je l'ai fait:
Contrôleur de Base:
Action (je suis en utilisant xVal):
L'action déclenche une exception, ajoute le ModelState à TempData et la renvoie au référent. Étant donné que l'action est pris, OnActionExecuted est toujours exécuté, mais la première fois autour de la ModelState est le même que TempData["ModelState"], de sorte que vous ne voulez pas fusionner avec vous-même. Lors de la redirection d'action est exécutée, OnActionExecuted déclenche à nouveau. Cette fois, si il n'y a rien dans TempData["ModelState"], il se confond avec le présent de l'action ModelState.
Vous pourrait l'étendre à plusieurs modèles en utilisant TempData["ModelState.utilisateur"] = ModelState et puis la fusion de tous les TempData objet qui commence par ModelState.
Je sais que ce fil est vieux, mais ce blog ASP.NET les Meilleures Pratiques a quelques excellentes suggestions.
#13 sur la page traite à l'aide de 2 filtres d'actions de sauvegarder et de restaurer
ModelState
entre les redirections.C'est le modèle que je propose, et je l'aime.
Voici l'exemple simplifié:
ce blog explique comment vous pourriez mettre en œuvre le PRG-Pattern MVC
http://blog.simonlovely.com/archive/2008/11/26/post-redirect-get-pattern-in-mvc.aspx
hth
Utiliser le TempData[] Collection
La tempdata est stockée à partir de l'un demande à l'autre, alors son parti.
Ce que j'ai fait pour maintenir mon ModelState peu importe où je vais avec des redirections est la suivante:
Dans votre modèle, ajouter:
Dans votre modèle du constructeur, ajouter:
Échantillon Post avec mon modèle, Modèles.ContactInformation:
Alors maintenant, vos tempdata a votre modèle et modelstate comme est.
Ce qui suit est mon point de vue, qui est agnostique à l'état de quoi que ce soit, sauf s'il a quelque chose. Voici le code: