Перенаправление на действие в другом контроллере

У меня есть два контроллера, называемых AccountController. Один из них, назовем его Controller A, находится в Area, называемом Admin, а другой, позволяет называть его Controller B, не находится ни в одном Area (я думаю, это означает, что он по умолчанию Area?). Controller B имеет action method, называемый Login. У меня есть action method в Controller A, который имеет эту строку

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

Проблема в том, что я получаю 404, когда эта строка выполняется, потому что делается попытка перенаправить на несуществующий action в Controller A. Я хочу вызвать action method в Controller B. Возможно ли это?

Ответ 1

Вы можете указать area в параметре routeValues. Попробуйте следующее:

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

или

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

в зависимости от того, к какой области вы стремитесь.

Ответ 2

Используйте это:

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

Это будет перенаправлено на действие LogIn в контроллере Account в "глобальной" области.

Он использует эту перегрузку RedirectToAction:

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

MSDN