2012-02-22 4 views
3

ActionResult에서 실행중인 글로벌 ActionFilter입니다. ActionFilter 안에 ActionResult 유형 (예 : JsonResultActionResult)을 감지 할 수 있습니까?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

OnActionExecuting에 filterContext.Result == null이 (액션이 아직 실행되지 않았기 때문에) 내 재정의를 OnResultExecuted로 변경해야했습니다. 고마워! – MaseBase

관련 문제