给定操作名称、控制器名称和 HTTP 动词(GET、POST 等),是否可以检查该操作是否具有(即被修饰)特定的操作过滤器属性?
请注意:操作和控制器不是当前操作和控制器,而是可以是应用程序中的任何操作和控制器。
Thanks!
我已经回答了我自己的问题,与此非常相似。
- 问题:如何获取给定操作、控制器和区域名称的操作的 MethodInfo? https://stackoverflow.com/questions/13042819/how-do-i-get-the-methodinfo-of-an-action-given-action-controller-and-area-name
- answer: https://stackoverflow.com/a/13044838/195417 https://stackoverflow.com/a/13044838/195417
您还需要http method
(即 GET、POST)以获得正确的结果,以及操作和控制器名称。
这是解决您的问题的代码片段:
var controllerFactory = ControllerBuilder.Current
.GetControllerFactory();
var controllerContext = @this.ControllerContext;
var otherController = (ControllerBase)controllerFactory
.CreateController(
new RequestContext(controllerContext.HttpContext, new RouteData()),
controllerName);
var controllerDescriptor = new ReflectedControllerDescriptor(
otherController.GetType());
var controllerContext2 = new ControllerContext(
new MockHttpContextWrapper(
controllerContext.HttpContext.ApplicationInstance.Context,
method),
new RouteData(),
otherController);
var actionDescriptor = controllerDescriptor
.FindAction(controllerContext2, actionName);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)