不必记住使用ChildActionOnly
属性修饰一堆操作方法,而是可以方便地指定整个控制器中的所有方法。制定控制器的所有操作方法ChildActionOnly
试图将ChildActionOnly
属性放在控制器类上不起作用(至少在我的代码上下文中),因为在控制器的依赖项注入期间(在请求管道的早期阶段发生),没有HttpContext或请求对象,并抛出错误“请求在此上下文中不可用”。
我可以创建一个RouteConstraint
,使路由本身执行ChildActionOnly
?这似乎有疑问,因为相同的请求管道问题 - 我不知道HttpContext在执行RouteConstraints期间是否可用。如果你有想法如何实现这一点,请分享。
也许创建一个使用反射来识别特定控制器的所有操作方法,并确保他们有ChildActionOnly
属性设置的单元测试...
如何做到这一点?你可以给一些入门代码(不需要打磨或者甚至可以工作,只需要一个起点就可以)。
感谢您的建议。由于我不是MVC的专家,你能否给出更多关于如何使用过滤器的细节 - 如果仅仅是为了下一个发现这个问题的人的完整性? – ErikE 2014-10-02 06:11:01
我更新了答案 – 2014-10-02 14:01:28
希望这可以帮助你实现你的目标 – 2014-10-02 14:07:50