Próbowałem na dwa sposoby: Response.Redirect (), który nic nie robi, a także wywoływanie nowej metody w kontrolerze podstawowym, która zwraca ActionResult i powoduje, że zwraca RedirectToAction () ... żadna z tych czynności nie działa.
Jak mogę wykonać przekierowanie z metody OnActionExecuting?
c#
asp.net-mvc
onactionexecuting
MetaGuru
źródło
źródło
new RedirectResult(url)
ciebie możesz również użyćnew RedirectToAction(string action, string controller)
. Mogło to zostać dodane do MVC po opublikowaniu odpowiedzi. Twoje rozwiązanie i tak postawiło mnie na właściwej drodze.new
) RedirectToAction:filterContext.Result = RedirectToAction(string action, string controller);
Można to również zrobić w ten sposób:
źródło
Utwórz osobną klasę,
Następnie, gdy tworzysz kontroler, nazwij tę adnotację jako
źródło
RouteValueDictionary
konstruktora, ponieważ odzwierciedla on routing w innym miejscu w MVC. +1Jeśli przekierowany kontroler dziedziczy po tym samym, w
baseController
którym przesłaniamyOnActionExecuting
metodę, wywołuje pętlę rekurencyjną. Załóżmy, że przekierowujemy go do akcji logowania kontrolera konta, wtedy akcja logowania będzie wywoływaćOnActionExecuting
metodę i przekierowywać do tej samej akcji logowania raz za razem ... Więc powinniśmy zastosowaćOnActionExecuting
metodę odprawy, aby sprawdzić pogodę, czy żądanie pochodzi od tego samego kontrolera, jeśli więc nie przekierowuj go ponownie. oto kod:chronione zastąpienie.
źródło