区域之间的RedirectToAction?

时间:2009-09-08 03:54:27

标签: asp.net-mvc asp.net-mvc-areas redirecttoaction

有没有办法重定向到其他区域的特定操作/控制器?

4 个答案:

答案 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");