2009-07-28 5 views
5

Comment accéder à RedirectToAction à partir d'un ActionFilter personnalisé?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); 
    } 
} 

Répondre

1

Vous n'avez pas vraiment. Vous pouvez utiliser un RedirectResult ou RedirectToRouteResult. Si vous cherchez à rediriger en fonction de l'authentification, vous devez considérer qu'un Contrôleur est un ActionFilter, vous pouvez donc probablement hériter de ce comportement de base à partir d'une classe de contrôleur de base. Remplacez simplement la méthode OnActionExecuting dans la classe de base.

8

Essayez ceci:

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