Đặt bộ lọcContext.Result
Với tên tuyến đường:
filterContext.Result = new RedirectToRouteResult("SystemLogin", routeValues);
Bạn cũng có thể làm một cái gì đó như:
filterContext.Result = new ViewResult
{
ViewName = SharedViews.SessionLost,
ViewData = filterContext.Controller.ViewData
};
Nếu bạn muốn sử dụng RedirectToAction
:
Bạn có thể tạo một RedirectToAction
phương thức công khai trên bộ điều khiển của mình ( tốt nhất là trên bộ điều khiển cơ sở của nó ) mà chỉ cần gọi bảo vệ RedirectToAction
từ System.Web.Mvc.Controller
. Thêm phương thức này cho phép thực hiện cuộc gọi công khai tới bạn RedirectToAction
từ bộ lọc.
public new RedirectToRouteResult RedirectToAction(string action, string controller)
{
return base.RedirectToAction(action, controller);
}
Sau đó, bộ lọc của bạn sẽ trông giống như:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var controller = (SomeControllerBase) filterContext.Controller;
filterContext.Result = controller.RedirectToAction("index", "home");
}