Ich habe zwei Möglichkeiten ausprobiert: Response.Redirect (), die nichts bewirkt, sowie das Aufrufen einer neuen Methode im Basis-Controller, die ein ActionResult zurückgibt und RedirectToAction () zurückgibt ... keine dieser Funktionen.
Wie kann ich eine Umleitung von der OnActionExecuting-Methode durchführen?
c#
asp.net-mvc
onactionexecuting
MetaGuru
quelle
quelle
new RedirectResult(url)
dir könnte man auch verwendennew RedirectToAction(string action, string controller)
. Dies wurde möglicherweise zu MVC hinzugefügt, nachdem Sie Ihre Antwort veröffentlicht haben. Ihre Lösung hat mich trotzdem auf den richtigen Weg gebracht.new
) RedirectToAction erfolgen:filterContext.Result = RedirectToAction(string action, string controller);
Dies kann auch folgendermaßen geschehen:
quelle
Erstellen Sie eine separate Klasse,
Wenn Sie dann einen Controller erstellen, rufen Sie diese Anmerkung als auf
quelle
RouteValueDictionary
Konstruktor, da es das Routing an anderer Stelle in MVC widerspiegelt. +1Wenn der umgeleitete Controller von demselben erbt, bei dem
baseController
wir dieOnActionExecuting
Methode überschreiben , wird eine rekursive Schleife verursacht. Angenommen, wir leiten es an die Anmeldeaktion des Account Controllers weiter, dann ruft die Anmeldeaktion dieOnActionExecuting
Methode auf und leitet sie immer wieder an dieselbe Anmeldeaktion weiter. Daher sollten wir eine Eincheckmethode anwenden, umOnActionExecuting
zu überprüfen, ob die Anforderung vom selben Controller stammt, wenn Leiten Sie die Anmeldeaktion dann nicht erneut um. Hier ist der Code:geschützte Übersteuerung.
quelle