如果在区域中找不到控制器,如何启用gracefull fallback到“root”控制器

时间:2011-08-25 22:50:24

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

我有一个ASP.NET MVC3 Razor应用程序变得太大而无法有效管理。 为了更好地控制我实现区域的代码并重新安排代码在相应的区域。

从多个区域使用的内容保留在“普通”控制器文件夹中。

一旦我使用某个区域的Action或ActionLink,就会出现问题。 我必须手动包含一个名为'area =“”'的路由参数来使链接工作。

有很多链接需要更改,所以我尝试让控制器选择回退到“根”控制器以找到所需的控制器。 到目前为止我没有运气。

如果找不到控制器,我该怎样做才能启用MVC3搜索区域控制器并继续在根控制器文件夹中搜索?

由于    安德烈亚斯

1 个答案:

答案 0 :(得分:0)

您可以通过适当设置路线来完成此操作。

每个区域都有自己的路线供应商,然后global.ascx中有路线。这些路由的行为类似于case语句,它首先尝试在区域中查找路由,如果找不到匹配的路由,则它会转到global.ascx路由。

所以,在你的新区域中,设置一个catchall路线,并在global.ascx设置一个catchall路线,你应该没问题。

您可以使用Haack's路线调试程序查看您的路线发生了什么。