Om te leiden voordat een specifieke actie wordt aangeroepen
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.