Pour rediriger avant qu’une action spécifique ne soit appelée

Date de création de la page :

lorsque vous visitez un site que vous construisez dans ASP.NET MVC, l’URL et le routage appelleront l’action correspondante du contrôleur, mais dans certaines situations, vous pouvez le rediriger vers une autre action ou page avant que l’action correspondante ne soit appelée.

Si vous voulez que chaque action rediriger, vous pouvez utiliser RedirectResult ou RedirectToRouteResult pour la résoudre, mais vous pouvez utiliser la méthode de remplacement Controller.OnActionExecuting si vous souhaitez rediriger en commun avant que chaque action soit appelée. Cette méthode est la méthode qui est manipulée avant que chaque action soit appelée.

Si vous voulez que la méthode Controller.OnActionExecuting redirige :

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

Si vous définissez un RedirectResult avec une URL dans ActionExecutingContext.Result, vous rediriger vers l’URL spécifiée. Si vous ne branchez pas avec une déclaration de si, une redirection est effectuée sur toutes les actions qui appartiennent au contrôleur cible.

Vous pouvez également définir une classe Controller commune pour chaque classe de base de classe Controller et implémenter la méthode d’exécution OnActionExecuting pour partager le traitement avec plusieurs classes Controller.

"ActionExecutingContext.Result" est un type ActionResult, de sorte que vous pouvez utiliser la classe RedirectToRouteResult ou la méthode Controller.RedirectToAction.