Om te leiden voordat een specifieke actie wordt aangeroepen

Aanmaakdatum van pagina :

wanneer u een site bezoekt die u inbouwt ASP.NET MVC, wordt de URL en de routering de bijbehorende controlleractie aangeroepen, maar in sommige situaties wilt u deze mogelijk doorverwijzen naar een andere actie of pagina voordat de bijbehorende actie wordt aangeroepen.

Als u wilt dat elke actie wordt omgeleid, u RedirectResult of RedirectToRouteResult gebruiken om deze op te lossen, maar u de overridemethode Controller.OnActionExecutgebruiken gebruiken als u een gemeenschappelijk wilt omleiden voordat elke actie wordt aangeroepen. Deze methode is de methode die wordt verwerkt voordat elke actie wordt aangeroepen.

Als u wilt dat de methode Controller.OnActionExecuting wordt omgeleid:

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

Als u een RedirectResult instelt met een URL in ActionExecutingContext.Result, wordt de opgegeven URL omgeleid. Als u niet vertakt met een if-instructie, wordt een omleiding uitgevoerd op alle acties die behoren tot de doelcontroller.

U ook een gemeenschappelijke klasse Controller instellen voor elke basisklasse controllerklasse en de methode OnActionExecuting implementeren om verwerking te delen met meerdere klassercontrollerklassen.

ActionExecutingContext.Result is een ActionResult-type, zodat u de klasse RedirectToRouteResult of de methode Controller.RedirectToAction gebruiken.