Перенаправление между областями?

Есть ли способ перенаправления на конкретное действие/контроллер в другой области?

Ответ 1

Вы попробовали это?:

return RedirectToAction("action", "controller", new { area = "area" });

Ответ 2

Ваш ответ был полезен для меня. Просто хотел добавить ниже:

Если вы хотите перенаправить из одной области в другую, код выше хорошо работает.

И если вы хотите перенаправить из одной области в контроллер/представление, которого нет в папке области (т.е. в большинстве случаев, на вашем лицевом конце), вы можете указать area = "".

то есть.

return RedirectToAction("action", "controller", new { area = "" });

Ответ 3

Я хотел бы спросить о последующих действиях. Понимая, что

return RedirectToAction("action", "area1/controller")

Также представлен

return RedirectToAction("action", "controller", new { area = "area1" });

Как можно просверлить другие области, используя одну и ту же нотацию? Большой выигрыш в наличии соответствующих обозначений заключается в том, что при рефакторинге рефакторинг обрабатывается соответствующим образом, если вам когда-нибудь понадобится вернуться и "переименовать" любой из контроллеров. Как только я добавлю дополнительную область в микс и сделаю их вложенными друг в друга, предыдущая нотация не будет эквивалентна.

return RedirectToAction("action", "area1/area2/controller");

Я обновлю вопрос, если найду его первым.


Хорошо, поэтому я считаю, что ответ не является чем-то захватывающим, но лучший способ сделать это, чтобы вы по-прежнему получали какую-то допустимую окраску w/resharper и intellisense:

return RedirectToAction("action","controller", new { area = "area1/area2" });

По крайней мере, здесь у вас будет возможность F12 или Ctrl + щелкнуть на контроллере и перейти к нему, и если вам нужно будет переименовать Resharper, он найдет его... но он НЕ внесет никаких изменений в области, определенные... так что выбирайте свои битвы.

В большинстве случаев я могу полностью избежать перенаправления... но иногда вы должны делать то, что должны делать.