Есть ли способ перенаправления на конкретное действие/контроллер в другой области?
Перенаправление между областями?
Ответ 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, он найдет его... но он НЕ внесет никаких изменений в области, определенные... так что выбирайте свои битвы.
В большинстве случаев я могу полностью избежать перенаправления... но иногда вы должны делать то, что должны делать.