web-dev-qa-db-fra.com

Rediriger vers une action dans un autre contrôleur

J'ai deux contrôleurs, tous deux appelés AccountController. L’un d’eux, appelons-le Controller A, est dans un Area appelé Admin et l’autre, appelez-le Controller B, n’est en aucun Area ( Je suppose que cela signifie que c'est dans la valeur par défaut Area?). Controller B a un action method appelé Login. J'ai un action method dans 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 de redirection vers un action dans Controller A inexistant. Je veux appeler le action method dans Controller B. Est-ce possible?

111
Sachin Kainth

Vous pouvez fournir le area dans le paramètre routeValues. Essaye ça:

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

Ou

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

en fonction de la zone que vous visez.

218
Rory McCrossan

Utilisez ceci:

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

Cela redirigera vers l'action LogIn du contrôleur Account dans la zone "globale".

Il utilise cette surcharge RedirectToAction:

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

MSDN

24
gdoron

Vous pouvez utiliser ceci:

return RedirectToAction("actionName", "controllerName", new { area = "Admin" });
6
Muhammad Awais

Utilisez ceci:

    return this.RedirectToAction<AccountController>(m => m.LogIn());
1
Hiren Patel