将所有模型状态错误作为JSON数组返回的最简单/最简洁的方法是什么?

时间:2011-11-17 10:52:52

标签: json asp.net-mvc-3

我正在手动验证并将错误添加到我的模型中,如下所示:

 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 个答案:

答案 0 :(得分:4)

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
    );
}