在最新的.NET Core 2.1中,引入了用于模型状态验证的自动验证(https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#mvc)。
以前,我可以通过以下代码覆盖验证错误响应:
switch
但是现在它不再起作用了。无需输入替代方法即可响应验证错误。
有人知道吗? 谢谢。
答案 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; });