我想从System.Web.Http.Filters.ActionFilterAttribute
调用一些控制器的方法(注意,它是WebApi,而不是MVC)。
我找到了ControllerDescriptor
对象,但发现只有这样才能创建新的控制器实例,而不是使用当前:
var controllerDescriptor = actionContext.ActionDescriptor.ControllerDescriptor;
var controller = (BaseApiController)controllerDescriptor.CreateController(actionContext.Request);
var companyId = controller.GetCompanyIdFromClaims();
是否有可能获得控制器的当前实例?
你从动作上下文的控制器上下文得到它,它有一个
public IHttpController Controller { get; set; }
属性
HttpControllerContext.Controller Property
例如:
var controller = (MyControllerType)actionContext.ControllerContext.Controller;