使用注解可以更方便对参数进行验证,但是也会存在非必须参数如: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;
}
博客指出在C# WEB API中使用注解验证参数时,遇到非必须参数请求,ModelState.IsValid过滤器会拦截并提示异常。若接口用model接收参数,可将值类型参数改为可空类型解决;若不用model接收,可在过滤器内部对值的错误内容进行排除。

745

被折叠的 条评论
为什么被折叠?



