asp.net-mvc – 在null模型的情况下返回错误响应

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在null模型的情况下返回错误响应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的ASP.NET MVC API应用程序中,如果缺少一些必需字段,我可以返回一个有用的ErrorResponse:
return Request.CreateErrorResponse(HttpStatusCode.BadRequest,ModelState);

"Message": "The request is invalid.","ModelState": {
            "myModel.FooA": [
                "The FooA is required."
            ],"myModel.FooC": [
                "The FooC property is required."
            ],"myModel.FooD": [
                "The FooD property is required."
            ]
        }

但是,当this answer确认时,NULL模型将验证.由于我不允许这样做,如何返回一个同样有用的错误响应,说明所需的所有值?我知道我可以为每个属性手动添加ModelError,但我怀疑CreateErrorResponse可能有一种方法可以为我做这个.

解决方法

你使用的是mvc3还是web-api?你的标签表明你正在使用mvc,但你的开头句意味着web-api.如果使用mvc3,您可以使用以下内容

调用ModelState.IsValid之前在控制器中添加

if (modelObj == null)
{
    ModelState.Clear();
    var blankModel = new MyClass();
    TryValidateModel(blankModel);
    return View("About",blankModel);        
}

如果您正在使用web-api并假设您正在使用System.ComponentModel.DataAnnotations,则可以使用以下命令:

ModelState.Clear();

var model = new MyClass();
var results = new List<ValidationResult>();
Validator.TryValidateObject(model,new ValidationContext(model,null,null),results,true);

var modelState = new ModelStateDictionary();
foreach (var validationResult in results)
    modelState.AddModelError(validationResult.MemberNames.ToArray()[0],validationResult.ErrorMessage);

return Request.CreateErrorResponse(HttpStatusCode.BadRequest,modelState);

猜你在找的asp.Net相关文章