Où puis-je trouver la liste des erreurs qui rendent ModelState invalide? Je n'ai vu aucune propriété d'erreurs sur l'objet ModelState.
120
Où puis-je trouver la liste des erreurs qui rendent ModelState invalide? Je n'ai vu aucune propriété d'erreurs sur l'objet ModelState.
À propos de "peut-il être que 0 erreurs et IsValid == false": voici le code source MVC de https://github.com/Microsoft/referencesource/blob/master/System.Web/ModelBinding/ModelStateDictionary.cs#L37-L41
public bool IsValid {
get {
return Values.All(modelState => modelState.Errors.Count == 0);
}
}
Maintenant, il semble que ce ne soit pas possible. Eh bien, c'est pour ASP.NET MVC v1.
Comme vous programmez probablement dans Visual Studio, vous feriez mieux de profiter de la possibilité d'utiliser des points d'arrêt pour des étapes de débogage aussi simples (avoir une idée du problème dans votre cas). Placez-les simplement devant / à l'endroit où vous vérifiez ModelState.isValid et survolez ModelState. Vous pouvez maintenant parcourir facilement toutes les valeurs à l'intérieur et voir quelle erreur provoque le retour isvalid false.
la source
var asdf = ModelState.Values.Where(v => v.Errors.Count > 0);
peut vous aiderCollez le code ci-dessous dans le ActionResult de votre contrôleur et placez le débogueur à ce stade.
la source
ou itérer avec
la source
Parfois, un classeur lève une exception sans message d'erreur. Vous pouvez récupérer l'exception avec l'extrait de code suivant pour découvrir ce qui ne va pas:
(Souvent, si le classeur essaie de convertir des chaînes en types complexes, etc.)
la source
Si vous supprimez la vérification de ModelsState.IsValid et laissez l'erreur, si vous copiez cette ligne
((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors
et la collez dans la section de surveillance de Visual Studio, cela vous donnera exactement l'erreur. Gain de temps à vérifier où se trouve l'erreur.la source
La propriété ModelState sur le contrôleur est en fait un objet ModelStateDictionary. Vous pouvez parcourir les clés du dictionnaire et utiliser la méthode IsValidField pour vérifier si ce champ particulier est valide.
la source
Comme je viens de m'arriver, cela peut également se produire lorsque vous ajoutez une propriété requise à votre modèle sans mettre à jour votre formulaire. Dans ce cas, le ValidationSummary ne listera pas le message d'erreur.
la source