using System.Collections.Generic; using System.Linq; using System.Web.Mvc; namespace Kreta.Web.Helpers.Error { public static class ModelStateExtensions { public class MvcModelState { public MvcModelState() { MVCModelState = new List(); } public List MVCModelState { get; set; } } public class Error { public Error(string key, string message) { Key = key; Message = message; } public string Key { get; set; } public string Message { get; set; } } public static MvcModelState AllErrors(this ModelStateDictionary modelState) { var result = new MvcModelState(); var erroneousFields = modelState.Where(ms => ms.Value.Errors.Any()) .Select(x => new { x.Key, x.Value.Errors }); foreach (var erroneousField in erroneousFields) { var fieldKey = erroneousField.Key; var fieldErrors = erroneousField.Errors .Select(error => new Error(fieldKey, error.ErrorMessage)); result.MVCModelState.AddRange(fieldErrors); } return result; } } }