So umleiten Sie, bevor eine bestimmte Aktion aufgerufen wird

Erstellungsdatum der Seite :

Wenn Sie eine Site besuchen, die Sie in ASP.NET MVC erstellen, rufen die URL und das Routing die entsprechende Controlleraktion auf, aber in einigen Situationen möchten Sie sie möglicherweise auf eine andere Aktion oder Seite umleiten, bevor die entsprechende Aktion aufgerufen wird.

Wenn Sie möchten, dass jede Aktion umgeleitet wird, können Sie RedirectResult oder RedirectToRouteResult verwenden, um es zu lösen, aber Sie können die Controller.OnActionExecuting-Override-Methode verwenden, wenn Sie gemeinsam umleiten möchten, bevor jede Aktion aufgerufen wird. Diese Methode ist die Methode, die behandelt wird, bevor jede Aktion aufgerufen wird.

Wenn die Controller.OnActionExecuting-Methode umgeleitet werden soll:

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

Wenn Sie ein RedirectResult mit einer URL in ActionExecutingContext.Result festlegen, leiten Sie zur angegebenen URL um. Wenn Sie keine Verzweigung mit einer if-Anweisung durchführen, wird für alle Aktionen, die zum Zielcontroller gehören, eine Umleitung durchgeführt.

Sie können auch eine gemeinsame Controllerklasse für jede Controllerklassenbasisklasse festlegen und die OnActionExecuting-Methode implementieren, um die Verarbeitung für mehrere Controllerklassen freizugeben.

"ActionExecutingContext.Result" ist ein ActionResult-Typ, sodass Sie die RedirectToRouteResult-Klasse oder die Controller.RedirectToAction-Methode verwenden können.