J'ai essayé deux façons: Response.Redirect () qui ne fait rien, ainsi que l'appel d'une nouvelle méthode à l'intérieur du contrôleur de base qui renvoie un ActionResult et le fait renvoyer RedirectToAction () ... aucun de ces deux ne fonctionne.
Comment puis-je faire une redirection à partir de la méthode OnActionExecuting?
c#
asp.net-mvc
onactionexecuting
CloudMeta
la source
la source
new RedirectResult(url)
vous pouvez également utilisernew RedirectToAction(string action, string controller)
. Cela peut avoir été ajouté à MVC après avoir publié votre réponse. Votre solution m'a quand même mis sur la bonne voie.new
) RedirectToAction:filterContext.Result = RedirectToAction(string action, string controller);
Cela peut également être fait de cette façon:
la source
Créez une classe séparée,
Ensuite, lorsque vous créez un contrôleur, appelez cette annotation comme
la source
RouteValueDictionary
constructeur car il reflète le routage ailleurs dans MVC. +1Si le contrôleur redirigé hérite de celui
baseController
où nous remplaçons laOnActionExecuting
méthode, cela provoque une boucle récursive. Supposons que nous le redirigeons vers l'action de connexion du contrôleur de compte, puis l'action de connexion appellera laOnActionExecuting
méthode et sera redirigée vers la même action de connexion encore et encore ... Nous devrions donc appliquer une vérificationOnActionExecuting
méthode d'enregistrement pour vérifier si la demande provient du même contrôleur si alors ne redirigez pas l'action de connexion à nouveau. voici le code:remplacement protégé.
la source