47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
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<Error>();
|
|
}
|
|
public List<Error> 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;
|
|
}
|
|
}
|
|
}
|