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