Přesměrování před voláním konkrétní akce
Když navštívíte web, který vytvoříte v ASP.NET MVC, adresa URL a směrování budou volat odpovídající akci řadiče, ale v některých situacích můžete chtít přesměrovat na jinou akci nebo stránku před voláním odpovídající akce.
Pokud chcete, aby každá akce přesměrovat, můžete použít RedirectResult nebo RedirectToRouteResult k vyřešení, ale můžete použít Controller.OnActionExecuting přepsat metodu, pokud chcete přesměrovat společné před každou akci je volána. Tato metoda je metoda, která je zpracována před každou akci je volána.
Pokud chcete Controller.OnActionExecuting metoda přesměrovat:
public class MyController : Controller
{
// 各アクションが呼ばれる前に呼ばれるメソッド
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (リダイレクトさせる条件)
{
filterContext.Result = new RedirectResult(url);
return;
}
}
}
Pokud nastavíte RedirectResult s adresou URL v ActionExecutingContext.Result, přesměrovat na zadanou adresu URL. Pokud neprovedete větvení s příkazem if, přesměrování se provádí u všech akcí, které patří do cílového řadiče.
Můžete také nastavit společnou třídu Controller pro každou základní třídu třídy řadiče a implementovat metodu OnActionExecuting pro sdílení zpracování s více třídami kontroleru.
"ActionExecutingContext.Result" je typ ActionResult, takže můžete použít třídu RedirectToRouteResult nebo metodu Controller.RedirectToAction.