.NET Core 2.1覆盖自动模型验证

时间:2018-07-01 17:39:11

标签: c# validation .net-core-2.1

在最新的.NET Core 2.1中,引入了用于模型状态验证的自动验证(https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#mvc)。

以前,我可以通过以下代码覆盖验证错误响应:

switch

但是现在它不再起作用了。无需输入替代方法即可响应验证错误。

有人知道吗? 谢谢。

2 个答案:

答案 0 :(得分:10)

如果您想继续使用ApiController属性(它具有禁用常规路由和允许模型绑定而无需添加[FromBody]参数属性的其他功能),则可以通过在您的Startup.cs文件中:

services.Configure<ApiBehaviorOptions>(opt =>
{
    opt.SuppressModelStateInvalidFilter = true;
});

这样可以做到,如果ModelState无效,则不会自动返回400错误。

答案 1 :(得分:0)

最近有一个朋友问我这个问题,我的方法是用自定义变量替换默认的ModalStateInvalidFilter

在测试中,我已经实施了here的建议,然后:

services.AddMvc(options =>
{
    options.Filters.Add(typeof(ValidateModelAttribute));
});


services.Configure<ApiBehaviorOptions>(options => { options.SuppressModelStateInvalidFilter = true; });