Solución:
Prueba esto
if (ModelState.IsValid)
{
//go on as normal
}
else
{
var errors = ModelState.Select(x => x.Value.Errors)
.Where(y=>y.Count>0)
.ToList();
}
errores será una lista de todos los errores.
Si desea mostrar los errores al usuario, todo lo que tiene que hacer es devolver el modelo a la vista y si no ha eliminado la Razor @Html.ValidationFor()
expresiones, se mostrará.
if (ModelState.IsValid)
{
//go on as normal
}
else
{
return View(model);
}
La vista mostrará cualquier error de validación junto a cada campo y / o en ValidationSummary si está presente.
Si está buscando generar una única cadena de mensaje de error que contenga el ModelState
mensajes de error que puede utilizar SelectMany
para aplanar los errores en una sola lista:
if (!ModelState.IsValid)
{
var message = string.Join(" | ", ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage));
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, message);
}
Puede hacer esto en su vista sin hacer nada especial en su acción usando Html.ValidationSummary () para mostrar todos los mensajes de error, o Html.ValidationMessageFor () para mostrar un mensaje para una propiedad específica del modelo.
Si aún necesita ver los errores desde su acción o controlador, consulte la propiedad ModelState.Errors