在呼叫特定操作之前重定向

頁面創建日期 :

當您訪問 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 方法。