我正在使用ApiController
工作的项目。有些ApiControllers
正在使用路由模板,有些正在使用RouteAttribute
我正在使用ModelState.IsValid
来判断请求是好还是坏。
我在用ApiControllers
RouteAttribute
中遇到了奇怪的行为
我的方法签名看起来像这样
Get([FromUri] AwesomeModel model)
[Route("magic")]
Get([FromUri] AwesomeModel model)
它们位于不同的控制器中,但使用相同的型号。除非请求中根本没有查询字符串,否则ModelState.IsValid
的{{1}}看起来像预期的那样。在这种情况下,当RouteAttribute
应为假时,ModelState.IsValid
为真。
使用路由模板的那个即使没有查询字符串也能正常工作。我使用RouteAttribute
略有错误,或者使用RouteAttribute
时是否存在ModelState问题?
如果问题RouteAttribute
弄乱了ModelState
绑定,是否有人有任何解决方案?
我目前正在通过使用我在名为ApiController
的项目库IsBadRequest()
中创建的函数来解决它,它返回一个bool。我使用ActionContext.ActionDescriptor.GetParameters()
使用ActionContext.ActionAguments
使用ModelState
检查Actions参数,如果有任何必需的参数没有相应的参数,我更新模型状态并返回false。我希望有更好的解决方案,因为我必须使用反射来正确更新itertools.permutations
。