加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 04:25:27 所属栏目:asp.Net 来源:网络整理
导读:在我的ASP.NET MVC API应用程序中,如果缺少一些必需字段,我可以返回一个有用的ErrorResponse: return Request.CreateErrorResponse(HttpStatusCode.BadRequest,ModelState); – "Message": "The request is invalid.","ModelState": { "myModel.FooA": [ "T
在我的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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读