2009-07-28 4 views
5

사용자 정의 ActionFilter에서 RedirectToAction에 액세스하는 방법은 무엇입니까?RedirectToAction ActionFilter에서

public class ExceptionHandlingFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     if (filterContext.Exception != null && !filterContext.ExceptionHandled) 
     { 
      filterContext.ExceptionHandled = true; 

      // HERE : RedirectToAction("ServiceNotFound","Error"); 

     } 
     base.OnActionExecuted(filterContext); 
    } 
} 

답변

1

정말로 그렇지 않습니다. RedirectResult 또는 RedirectToRouteResult를 사용할 수 있습니다. 인증을 기반으로 리다이렉션을하는 경우 컨트롤러가 ActionFilter라는 것을 고려해야하므로 기본 컨트롤러 클래스에서이 기본 동작을 상속받을 수 있습니다. 기본 클래스의 OnActionExecuting 메서드를 재정의하십시오.

8

이 시도 :

filterContext.Result = new RedirectToRouteResult(
    new System.Web.Routing.RouteValueDictionary { 
     {"controller", "Error"}, {"action", "ServiceNotFound"} 
    } 
); 
관련 문제