Aby przekierować przed wywołaniem określonej akcji
podczas odwiedzania witryny, która tworzysz w ASP.NET MVC, adres URL i routing wywoła odpowiednią akcję kontrolera, ale w niektórych sytuacjach możesz chcieć przekierować ją do innej akcji lub strony przed wywołaniem odpowiedniej akcji.
Jeśli chcesz, aby każda akcja przekierować, można użyć RedirectResult lub RedirectToRouteResult go rozwiązać, ale można użyć Controller.OnActionWykonanie zastąpić metody, jeśli chcesz przekierować wspólne przed każdą akcję jest wywoływana. Ta metoda jest metodą, która jest obsługiwana przed każdą akcją jest wywoływana.
Jeśli chcesz, aby metoda Controller.OnActionExecuting przekierować:
public class MyController : Controller
{
// 各アクションが呼ばれる前に呼ばれるメソッド
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (リダイレクトさせる条件)
{
filterContext.Result = new RedirectResult(url);
return;
}
}
}
Jeśli ustawisz RedirectResult z adresem URL w ActionExecutingContext.Result, przekierowanie do określonego adresu URL. Jeśli nie rozgałęzisz się z instrukcją if, przekierowanie jest wykonywane dla wszystkich akcji, które należą do kontrolera docelowego.
Można również ustawić wspólną klasę controller dla każdej klasy podstawowej klasy controller i zaimplementować Metodę OnActionExecuting, aby udostępnić przetwarzanie wielu klas kontrolera.
"ActionExecutingContext.Result" jest typem ActionResult, dzięki czemu można użyć RedirectToRouteResult klasy lub Controller.RedirectToAction metody.