在调用特定操作之前重定向

页面创建日期 :

当您访问 ASP.NET MVC 构建的网站时,URL 和路由将调用相应的控制器操作,但在某些情况下,您可能希望在调用相应的操作之前重定向到其他操作或其他页面。

如果每个操作都重定向,则可以使用 RedirectResult 或 RedirectToRouteResult 解决它,但如果希望每个操作在调用之前进行通用重定向,则可以使用 Controller.OnActionExecuting 重写方法。 此方法是在调用每个操作之前处理的。

如果要重定向 Controller.OnActionExecuting 方法,请执行以下操作:

public class MyController : Controller
{
  // 各アクションが呼ばれる前に呼ばれるメソッド
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    if (リダイレクトさせる条件)
    {
      filterContext.Result = new RedirectResult(url);
      return;
    }
  }
}

将 RedirectResult 设置为"ActionExecutingContext.Result"时,它将重定向到指定的 URL。 如果未使用 if 语句分支,则会对属于目标控制器的所有操作执行重定向。

您还可以为每个控制器类的基类设置一个通用的控制器类,并实现 OnActionExecuting 方法,以便在多个控制器类之间共享处理。

由于 ActionExecutingContext.Result 的类型为 ActionResult,因此可以使用 RedirectToRouteResult 类和 Controller.RedirectToAction 方法。