RedirectToAction между областями?
Есть ли способ перенаправить на конкретное действие / контроллер в другой области?
4 ответа
Вы пробовали это?
return RedirectToAction("action", "controller", new { area = "area" });
Ваш ответ был полезен для меня. Просто хотел добавить ниже:
Если вы хотите перенаправить из одной области в другую, приведенный выше код работает хорошо.
И, если вы хотите перенаправить из одной области к контроллеру / представлению, которого нет в папке области (то есть, в большинстве случаев, в вашем интерфейсе), вы можете указать area = "".
т.е.
return RedirectToAction("action", "controller", new { area = "" });
Я хотел бы попросить продолжение здесь. Понимание того, что
return RedirectToAction("action", "area1/controller")
Также представлен
return RedirectToAction("action", "controller", new { area = "area1" });
Как можно углубиться в дальнейшие вложения области, используя те же обозначения? Большим преимуществом наличия соответствующих обозначений является то, что, в частности, с reSharper, рефакторинг обрабатывается надлежащим образом, если вам когда-либо понадобится вернуться и "переименовать" любой из контроллеров. Как только я добавляю дополнительную область к соединению и размещаю их друг в друге, предыдущая запись не эквивалентна.
return RedirectToAction("action", "area1/area2/controller");
Я буду держать вопрос в курсе, если найду его первым.
Хорошо, поэтому я считаю, что ответ не является чем-то впечатляющим, но лучший способ сделать это, так что вы по-прежнему получаете какую-то действительную окраску с resharper & intellisense, выглядит следующим образом:
return RedirectToAction("action","controller", new { area = "area1/area2" });
По крайней мере, здесь у вас будет возможность F12 или Ctrl+ клик на контроллере, и вы будете перенаправлены на него, и если вам нужно будет переименовать его, Resharper найдет его... но он не будет вносить никаких изменений в определенные области... так что выбирай свои сражения.
В большинстве случаев я могу полностью избежать перенаправлений... но иногда ты должен делать то, что должен.
Попробуй это
return RedirectToAction("ActionName", "AreaName/ControllerName");