2009-05-28 73 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 
}