2009-10-15 14 views
3

ModelState.IsValid me renvoie false dans mon contrôleur. Je sais que cela signifie qu'une ou plusieurs erreurs de modèle ont été trouvées lors de la liaison du modèle. Ma question est comment puis-je voir les erreurs?État du modèle ASP.NET MVC

J'ai remarqué que mon ModelState en particulier contient 6 éléments. Si je tente de faire l'une de ces ...

ModelState[0].Errors[0].ToString() 
ModelState[0].Errors[0].ErrorMessage 
ModelState[0].Value.AttemptedValue 

Je reçois cette erreur:

The best overloaded method match for 'System.Web.Mvc.ModelStateDictionary.this[string]' has some invalid arguments 
+0

Avez-vous débogué l'action de votre contrôleur et avez-vous réellement vu ce qu'il y a dans ModelState? –

+0

Pouvez-vous vérifier l'exception .InnerException de ceux-ci? –

Répondre

3

Le Indexor dans le ModelState est une chaîne (généralement le nom de la propriété du modèle incriminé ou le nom de l'élément html).

Si vous vérifiez les documents MSDN pour la classe ModelState, vous verrez qu'il a une collection Errors qui vous permettra d'itérer sur les éléments d'erreur (qui sont ModelError instances) pour voir ce qui leur a causé.

2

dans le contrôleur;

ModelState.AddModelError("username", "Bad username"); 

en vue;

<%= Html.ValidationMessage("username") %> 

également

<%= Html.ValidationSummary() %> 

Html.ValidationSummary() pourrait être ce que vous recherchez.

Questions connexes