2009-07-28 20 views
5

¿Cómo acceder a RedirectToAction desde un ActionFilter personalizado?RedirectToAction de 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); 
    } 
} 

Respuesta

1

Realmente no. Puede usar un RedirectResult o RedirectToRouteResult. Si está buscando una redireccionamiento basada en la autenticación, debe considerar que un Controlador es un ActionFilter, por lo que probablemente pueda heredar este comportamiento básico de una clase de controlador base. Simplemente anule el método OnActionExecuting en la clase base.

8

Prueba esto:

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