Så här omdirigerar du innan en viss åtgärd anropas
När du besöker en webbplats som du bygger i ASP.NET MVC anropar URL:en och routningen motsvarande styrenhetsåtgärd, men i vissa situationer kanske du vill omdirigera den till en annan åtgärd eller sida innan motsvarande åtgärd anropas.
Om du vill att varje åtgärd ska omdirigeras kan du använda RedirectResult eller RedirectToRouteResult för att lösa det, men du kan använda åsidosättningsmetoden Controller.OnActionExecuting om du vill omdirigera gemensamt innan varje åtgärd anropas. Den här metoden är den metod som hanteras innan varje åtgärd anropas.
Om du vill att metoden Controller.OnActionExecuting ska omdirigeras:
public class MyController : Controller
{
// 各アクションが呼ばれる前に呼ばれるメソッド
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (リダイレクトさせる条件)
{
filterContext.Result = new RedirectResult(url);
return;
}
}
}
Om du anger en RedirectResult med en URL i ActionExecutingContext.Result omdirigerar du till den angivna URL:en. Om du inte förgrenar dig med en IF-sats utförs en omdirigering på alla åtgärder som tillhör målkontrollanten.
Du kan också ange en gemensam controller-klass för varje controller-klassbasklass och implementera OnActionExecuting-metoden för att dela bearbetning med flera Controller-klasser.
"ActionExecutingContext.Result" är en ActionResult-typ, så du kan använda klassen RedirectToRouteResult eller metoden Controller.RedirectToAction.