2014-01-27 3 views
0

У меня есть базовый контроллер и фильтр действий в том же пространстве имен, но в разных классах. Я создал класс внутри базового контроллера, который запрашивает заголовки 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 
     } 
    } 
} 

ответ

6

Вы пробовали получать контроллер от filterContext

var controller = filterContext.Controller as BaseController; 

controller.GetHeaders(); 
+0

Работает отлично. Благодаря! – Keven

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

     filterContext.HttpContext.Response.Redirect("~/BaseController/GetHeaders"); 
    } 
} 
Смежные вопросы