检测ActionFilter中的ActionResult类型?

时间:2012-02-22 08:16:31

标签: c# asp.net-mvc-3

我在每个ActionFilter上执行全局ActionResult。是否有可能在JsonResult内检测到ActionResult类型(例如ActionResultActionFilter)?

例如,我希望ActionFilter立即退出:

public JsonResult someAjaxAction()
{
}

但我希望它能在这里做到这一点:

public ActionResult PageView()
{
}

是的,我知道我可以使用ActionFilter属性并装饰我想要执行此操作的操作,但我想将其保留为全局ActionFilter并在内部检测我是否需要执行所需的工作。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

ActionExecutingContext具有名为result的属性,ActionResult类型可能会解决您的问题。