ASP.NET Core 自定义WebApi模型验证

这也是官网的推荐的做法是,若要自定义验证错误引发的响应,请使用InvalidModelStateResponseFactory。这个InvalidModelStateResponseFactory是一个参数为ActionContext,返回值为IActionResult的委托,具体实现如下:

public void ConfigureServices(IServiceCollection services)
        {           //参数验证
            services.Configure<ApiBehaviorOptions>(options =>
            {
                options.InvalidModelStateResponseFactory = (context) =>
                {
                    var error = context.ModelState.GetValidationSummary();
                    
                    return new JsonResult(Result.FromError($"参数验证不通过:{error.ToString()}", ResultCode.InvalidParams));
                };
            });
        }

 

注:如果想通过继承IActionFilter进行模型验证,需要禁用.net core自带的模型验证机制,代码如下

public void ConfigureServices(IServiceCollection services)
        {  
            //禁用默认行为
            services.Configure<ApiBehaviorOptions>(options =>
            {
                options.SuppressModelStateInvalidFilter = true;
            });
        }

 

参考资料:https://www.cnblogs.com/lex-wu/p/11265458.html

posted @ 2020-08-11 17:04  优秀的代码搬运工zz  阅读(449)  评论(0编辑  收藏  举报