2 votes

Validation / Messages d'erreur dans une vue ASP.Net MVC 2 sans rapport avec une propriété

Quel modèle puis-je utiliser pour afficher sur une vue MVC 2 des erreurs qui ne sont pas liées à une seule propriété ?

Par exemple, lorsque j'appelle un service web pour traiter des données de formulaire, le service web peut renvoyer une erreur ou lancer une exception. J'aimerais afficher une version conviviale de cette erreur, mais je n'ai aucun moyen logique d'associer l'erreur à une propriété donnée du modèle.

UPDATE :

J'essaie d'utiliser ce code comme suggéré, mais aucun message de synthèse ne s'affiche :

MyPage.spark :

Html.ValidationSummary(false, "Oopps it didn't work.");

Contrôleur :

ViewData.ModelState.AddModelError("_FORM", "My custom error message.");
// Also tried this: ViewData.ModelState.AddModelError(string.Empty, "My custom error message.");
return View();

MISE À JOUR 2

Qu'est-ce que cela signifie ?

à côté de chaque champ.

Au lieu de toujours afficher toutes les erreurs de validation, la méthode d'aide Html.ValidationSummary dispose d'une nouvelle option permettant d'afficher uniquement erreurs au niveau du modèle. Cela permet les erreurs au niveau du modèle d'être affichées dans le résumé de la validation et d'afficher les erreurs spécifiques aux champs à côté de chaque champ.

Source : http://www.asp.net/learn/whitepapers/what-is-new-in-aspnet-mvc#_TOC3_14

Plus précisément Comment ajoute-t-on au modèle une erreur au niveau du modèle (par opposition à une erreur spécifique au champ) ?

UPDATE 3 :

J'ai remarqué ce matin que Html.ValidationSummary n'affiche aucune erreur, pas même des erreurs de propriété. J'essaie de comprendre pourquoi.

2voto

Charlino Points 11217

Il suffit d'ajouter une erreur personnalisée à la ModelState en conjonction avec l'objet ValidationSummary() La méthode d'extension devrait faire l'affaire. J'utilise quelque chose comme "_FORM" pour la clé... juste pour qu'il n'y ait pas de conflit avec d'autres champs.

En ce qui concerne les modèles, j'ai configuré mon système de manière à ce que la couche logique d'entreprise (appelée par les services du contrôleur) lève une exception personnalisée si quelque chose d'inattendu se passe mal et que je veux l'afficher dans la vue. Cette exception personnalisée contient un Dictionary<string, string> qui a des erreurs que je devrais ajouter à ModelState .

HTHs,
Charles

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X