Какой самый простой / простой способ вернуть все ошибки состояния модели в виде массива JSON? - PullRequest
0 голосов
/ 17 ноября 2011

Я вручную проверяю и добавляю ошибки в свою модель следующим образом:

 var validationResult = model.Validate(new ValidationContext(model, null, null));

        foreach (var error in validationResult)
        {
            foreach (var memberName in error.MemberNames)
            {
                ModelState.AddModelError(memberName, error.ErrorMessage);
            }
        }

        if (!ModelState.IsValid)
        {

        }

Если модель недействительна, я хочу вернуть массив JSON, содержащий сообщения об ошибках.Это меня немного сбивает с толку.

1 Ответ

4 голосов
/ 17 ноября 2011
if (!ModelState.IsValid)
{
    return Json(
        ModelState
            .Where(x => x.Value.Errors.Count > 0)
            .Select(x => new 
            { 
                Key = x.Key, 
                Errors = x.Value.Errors.Select(e => e.ErrorMessage) 
            }
        ),
        JsonRequestBehavior.AllowGet
    );
}

или если вам нужен только массив сообщений об ошибках:

if (!ModelState.IsValid)
{
    return Json(
        ModelState
            .Where(x => x.Value.Errors.Count > 0)
            .SelectMany(x => x.Value.Errors.Select(e => e.ErrorMessage))
            .Distinct(),
        JsonRequestBehavior.AllowGet
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...