137 votes

Rediriger vers une Action dans un autre contrôleur

J'ai deux contrôleurs, tous deux appelés AccountController. L'un d'eux, appelons cela Controller A, est en Area appelés Admin et les autres, permet de l'appeler Controller B, n'est pas en Area (je suppose que cela signifie que c'est dans la valeur par défaut Area?). Controller B a action method appelés Login. J'ai un action method en Controller A, qui a cette ligne

return RedirectToAction("LogIn", "Account");

Le problème est que je reçois un 404 lorsque cette ligne est exécutée, car une tentative est faite pour rediriger vers une inexistants action en Controller A. Je tiens à appeler l' action method en Controller B. Est-ce possible?

254voto

Rory McCrossan Points 69838

Vous pouvez fournir l' area dans la routeValues paramètre. Essayez ceci:

return RedirectToAction("LogIn", "Account", new { area = "Admin" });

Ou

return RedirectToAction("LogIn", "Account", new { area = "" });

selon la région que vous visez.

29voto

gdoron Points 61066

Utilisez ceci:

return RedirectToAction("LogIn", "Account", new { area = "" });

Cela vous redirigera vers la LogIn d'action dans l' Account contrôleur dans le "global".

C'est à l'aide de cette RedirectToAction surcharge:

protected internal RedirectToRouteResult RedirectToAction(
    string actionName,
    string controllerName,
    Object routeValues
)

MSDN

-11voto

sirbombay Points 72

Je l'ai fait et il a bien fonctionné :)

  return Redirect("/Login/Account");

KISS - keep it simple chéri ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X