从动作过滤器调用控制器方法

Kev*_*ven 0 c# asp.net asp.net-mvc

我的基本控制器和动作过滤器在同一名称空间中但在不同的类中.我在基本控制器内创建了一个请求http标头的类,我想在我的动作过滤器中调用该方法.

如果我做的很简单,Details dtls = GetHeaders()那么intelliSense会询问我是否要GetHeaders()在动作过滤器中创建另一个方法.

所以我的问题是我可以直接从动作过滤器中调用类中的GetHeaders()方法BaseController吗?我该怎么办?如果没有,我该如何调用该方法?

namespace Infrastructure
{
    public class BaseController
    {
        public Details GetHeaders()
        {
            //Get the headers
        }
    }

    public class MyFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            //Call GetHeaders() to get Header1 data
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Col*_*con 6

你有没有试过从控制器获取控制器 filterContext

var controller = filterContext.Controller as BaseController;

controller.GetHeaders();
Run Code Online (Sandbox Code Playgroud)