2012-02-22 53 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