有没有办法重定向到其他区域的特定操作/控制器?
答案 0 :(得分:236)
你试过这个吗?:
return RedirectToAction("action", "controller", new { area = "area" });
答案 1 :(得分:37)
你的回答对我很有帮助。只是想在下面添加:
如果您想从一个区域重定向到另一个区域,则上面的代码效果很好。
并且,如果您想从一个区域重定向到区域文件夹中不存在的控制器/视图(即大多数情况下,您的前端),您可以指定area =“”。
即
return RedirectToAction("action", "controller", new { area = "" });
答案 2 :(得分:17)
我想问一下这里的后续行动。理解
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会找到它......但它不会对它进行任何修改定义的区域...所以选择你的战斗。
在大多数情况下,我可以完全避免使用重定向...但有时你必须做你必须做的事。
答案 3 :(得分:1)
试试这个
return RedirectToAction("ActionName", "AreaName/ControllerName");