使用注解可以更方便对参数进行验证,但是也会存在非必须参数如:https://aaa.com?id=1&name=&age=;或https://aaa.com?id=1&name&age的请求。这时ModelState.IsValid过滤器将会拦截请求提示"值是必需的。"或"有一个值是必需的,但请求中不存在该值。"异常。
- 若接口使用model接收参数,可将值类型参数改为可空类型解决此问题;如:
int?id
- 若接口不使用model接收参数,暂无没有找到解决方案;
- 经过调试可以使用一种笨拙的取巧方案解决:在过滤器.ModelState.IsValid==false内部对值的错误内容进行排除
if (Msg != "有一个值是必需的,但请求中不存在该值。" && Msg != "值是必需的。")
{
return;
}