Per reindirizzare prima che venga chiamata un'azione specifica

Data di creazione della pagina :

Quando si visita un sito compilato in ASP.NET MVC, l'URL e il routing chiameranno l'azione del controller corrispondente, ma in alcune situazioni potrebbe essere necessario reindirizzarlo a un'altra azione o pagina prima che venga chiamata l'azione corrispondente.

Se si desidera che ogni azione venga reindirizzata, è possibile usare RedirectResult o RedirectToRouteResult per risolverla, ma è possibile usare il metodo di override Controller.OnActionExecuting se si desidera reindirizzare in comune prima che venga chiamata ogni azione. Questo metodo è il metodo che viene gestito prima che venga chiamata ogni azione.

Se si desidera che il controller.OnActionExecuting metodo di reindirizzamento:

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

Se si imposta un RedirectResult con un URL in ActionExecutingContext.Result, si reindirizza all'URL specificato. Se non si dirama con un'istruzione if, viene eseguito un reindirizzamento su tutte le azioni che appartengono al controller di destinazione.

È anche possibile impostare una classe Controller comune per ogni classe di base della classe Controller e implementare il metodo OnActionExecuting per condividere l'elaborazione con più classi Controller.You can also set a common Controller class for each Controller class base class and implement the OnActionExecuting method to share processing with multiple Controller classes.

"ActionExecutingContext.Result" is an ActionResult type, so you can use the RedirectToRouteResult class or the Controller.RedirectToAction method.