首页 > 解决方案 > 用于检查 ModelState.IsValid 的 ActionFilter 永远不会被命中

问题描述

我写了一个 ActionFilter 来检查我的模型状态是否有效(所以我可以记录问题):

public class ValidationFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    { ... }
}

我的断点永远不会被击中,我确实在 Postman 中得到了输出:

{ "errors": {
"RequiredText": [
"Test - RequiredText is required"
]
},
"title": "出现一个或多个验证错误。",
"status": 400,
"traceId": "0HLOBA7E4R7SL:00000002"
}

我假设 .NET Core 事先进行了验证。
有没有办法关闭它,所以我的属性被使用?

标签: c#asp.net-core.net-coreasp.net-core-webapi

解决方案


SuppressModelStateInvalidFilter我认为您必须通过将选项设置为 true来禁用默认行为。您可以在 ConfigureServices 方法中将此选项设置为 true。像,

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<ApiBehaviorOptions>(options =>
    {
        options.SuppressModelStateInvalidFilter = true;
    });
}

推荐阅读