.net属性路由是否影响ApiControllers中的ModelState

时间:2017-01-20 21:12:54

标签: c# asp.net asp.net-web-api

我正在使用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

0 个答案:

没有答案