2009-07-28 12 views
5

Wie Zugriff auf RedirectToAction von einem benutzerdefinierten ActionFilter?RedirectToAction Von 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); 
    } 
} 

Antwort

1

Sie nicht wirklich. Sie können entweder RedirectResult oder RedirectToRouteResult verwenden. Wenn Sie auf der Grundlage der Authentifizierung eine Umleitung wegleiten, sollten Sie berücksichtigen, dass ein Controller ein ActionFilter ist. Daher können Sie dieses grundlegende Verhalten wahrscheinlich von einer Basiscontrollerklasse erben. Überschreiben Sie einfach die OnActionExecuting-Methode in der Basisklasse.

8

Versuchen Sie folgendes:

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