2012-02-22 51 views
3

我有一個全球性的ActionFilter每個ActionResult執行。是否有可能檢測ActionFilter內的ActionResult類型(如JsonResult與一個ActionResult)?在ActionFilter中檢測ActionResult類型?

舉例來說,我希望ActionFilter立即退出這裏:

public JsonResult someAjaxAction() 
{ 
} 

,但我想它做它在這裏的魔法:

public ActionResult PageView() 
{ 
} 

是的,我知道我可以只使用一個ActionFilter屬性和裝飾,我想執行這個在行動,但我想保持它作爲一個全球性的ActionFilter和檢測的操作中我是否需要執行所需的工作。

回答

5
public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 
     if (filterContext.Result is ViewResult) 
     { 
      ... 
     } 
     else if (filterContext.Result is JsonResult) 
     { 
      ... 
     } 
     ... 
    } 
} 
+0

我需要將我的覆蓋更改爲OnResultExecuted,因爲OnActionExecuting具有filterContext.Result == null(因爲該操作尚未執行)。謝謝! – MaseBase 2012-02-22 08:36:10