我想从System.Web.Http.Filters.ActionFilterAttribute
调用某些控制器的方法(请注意,它是WebApi,而不是MVC)。
我找到了ControllerDescriptor
对象,但是找到了创建新控制器实例的唯一方法,而不是使用current:
var controllerDescriptor = actionContext.ActionDescriptor.ControllerDescriptor;
var controller = (BaseApiController)controllerDescriptor.CreateController(actionContext.Request);
var companyId = controller.GetCompanyIdFromClaims();
是否可以获得控制器的当前实例?
答案 0 :(得分:1)
您是从操作上下文的控制器上下文中获得的,该上下文具有
public IHttpController Controller { get; set; }
财产
HttpControllerContext.Controller Property
例如:
var controller = (MyControllerType)actionContext.ControllerContext.Controller;