¿Dónde puedo encontrar la lista de errores que invalidan ModelState? No vi ninguna propiedad de errores en el objeto ModelState.
120
¿Dónde puedo encontrar la lista de errores que invalidan ModelState? No vi ninguna propiedad de errores en el objeto ModelState.
Acerca de "puede ser que 0 errores e IsValid == false": aquí está el código fuente 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);
}
}
Ahora, parece que no puede ser. Bueno, eso es para ASP.NET MVC v1.
Como probablemente esté programando en Visual Studio, será mejor que aproveche la posibilidad de usar puntos de interrupción para pasos de depuración tan sencillos (para hacerse una idea de cuál es el problema como en su caso). Simplemente colóquelos justo en frente / en el lugar donde marca ModelState.isValid y coloque el cursor sobre ModelState. Ahora puede navegar fácilmente a través de todos los valores dentro y ver qué error causa el retorno falso de isvalid.
fuente
var asdf = ModelState.Values.Where(v => v.Errors.Count > 0);
te puede ayudarPegue el siguiente código en ActionResult de su controlador y coloque el depurador en este punto.
fuente
o iterar con
fuente
A veces, un archivador arroja una excepción sin mensaje de error. Puede recuperar la excepción con el siguiente fragmento para averiguar cuál es el problema:
(A menudo, si el archivador intenta convertir cadenas en tipos complejos, etc.)
fuente
Si quita la comprobación de ModelsState.IsValid y deja que se produzca un error, si copia esta línea
((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors
y la pega en la sección de observación en Visual Studio, le dará exactamente cuál es el error. Ahorra mucho tiempo comprobando dónde está el error.fuente
La propiedad ModelState del controlador es en realidad un objeto ModelStateDictionary. Puede iterar a través de las claves en el diccionario y usar el método IsValidField para verificar si ese campo en particular es válido.
fuente
Como me acaba de pasar, esto también puede suceder cuando agrega una propiedad requerida a su modelo sin actualizar su formulario. En este caso, ValidationSummary no mostrará el mensaje de error.
fuente