2009-05-28 70 views

回答

4

根据专业ASP.NET MVC 1.0书,ActionFilters在控制器实例化后运行。在OnActionExecuting(ActionFilter调用的第一个方法)时,Controller上下文可用。

2

控制器将在Action Filter的OnActionExecuted和OnActionExecuting事件触发之前得到实例化。您也可以通过传递给事件处理程序的“filterContext”参数访问Controller。

public class TestActionAttribute : FilterAttribute, IActionFilter 
{ 
    #region IActionFilter Members 

    public void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     var controller = filterContext.Controller; 
    } 

    public void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     var controller = filterContext.Controller; 
    } 

    #endregion 
} 
1

抽象类System.Web.Mvc.ActionFilterAttribute(派生从该类自己ActionFilter)有4种OnXXX方法:

  • OnActionExecuting
  • OnActionExecuted
  • OnResultExecuting
  • OnResultExecuted

我觉得在OnActionExecuting你可以检查你的控制器:

YourController controller = filterContext.Controller as YourController 
if(controller != null) 
{ 
    // check your controller 
}