150 votes

Comment puis-je obtenir la collection d'erreurs d'état du modèle dans ASP.NET MVC?

Comment puis-je obtenir une collection d'erreurs en vue?

Je ne veux pas utiliser le Helper Html Récapitulatif de la Validation ou de Validation du Message. Au lieu de cela, je veux vérifier les erreurs et le cas échéant de les afficher dans le format spécifique. Également sur les contrôles d'entrée, je veux vérifier une propriété spécifique d'erreur et d'ajouter une classe à l'entrée.

P. S. je suis à l'aide de l'Allumage du Moteur d'Affichage, mais l'idée doit être la même.

J'ai donc pensé que je pouvais faire quelque chose comme...

<if condition="${ModelState.Errors.Count > 0}">
  DispalyErrorSummary()
</if>

....and also...

<input type="text" value="${Model.Name}" 
       class="?{ModelState.Errors["Name"] != string.empty} error" />

....

Ou quelque chose comme ça.

Mise à JOUR

Ma solution finale ressemblait à ceci:

<input type="text" value="${ViewData.Model.Name}" 
       class="text error?{!ViewData.ModelState.IsValid && 
                           ViewData.ModelState["Name"].Errors.Count() > 0}" 
       id="Name" name="Name" />

Cela ne fait qu'ajouter l'erreur de la classe css si cette propriété a une erreur.

216voto

Chad Moran Points 8560
<pre><code></code><p>ou</p><pre><code></code></pre><p>et pour une propriété spécifique...</p><pre><code></code></pre></pre>

62voto

Chris McKenzie Points 1023

Pour obtenir seulement les erreurs de la ModelState, utilisez cette Linq :

31voto

Todd Menier Points 3599

Version condensée de la réponse de @ChrisMcKenzie:

29voto

UshaP Points 368

Cela vous donnera une corde avec toutes les erreurs avec séparation par des virgules

6voto

Rake36 Points 643

Merci Tchad ! Pour afficher toutes les erreurs associées à la clé, voici ce que je suis venu avec. Pour une raison quelconque le helper Html.ValidationMessage base montre seulement la première erreur associée à la clé.

HtmlHelper :

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