2009-07-28 14 views
5

Come accedere a RedirectToAction da un ActionFilter personalizzato?RedirectToAction From 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); 
    } 
} 

risposta

1

Non proprio. Puoi utilizzare RedirectResult o RedirectToRouteResult. Se stai cercando di reindirizzarti in base all'autenticazione, dovresti considerare che un Controller è un ActionFilter, quindi puoi probabilmente ereditare questo comportamento di base da una classe di controller di base. Basta eseguire l'override del metodo OnActionExecuting nella classe base.

8

Prova questo:

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