1

我正在使用 MVC3 和 C#。

我在一个区域内有一个子应用程序,而主应用程序挂在项目的根目录之外,即:

Root
  - Controller
  - Models
  - Views
  - Areas
     - SubApp

SubApp 有自己的路由文件,默认路由如下:

            context.MapRoute(
            "SubApp_default",
            "SubApp/{controller}/{action}/{id}",
            new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
        );

我有一个通用菜单,其中包含应该指向根控制器/操作的 URL。但是,当我在子应用程序中时,这些菜单 URL 会更改,例如:

/SubApp/Home/Index 

什么时候应该:

/Home/Index

我怀疑是上面的“SubApp_default”路由导致了这个问题。我希望“根”URL 使用“根”路由,如果你明白我的想法,并且只有特定区域的 URL 才能使用区域路由。

请思想。

非常感谢。

编辑1:

我正在使用 ActionLinks 即:

 @Html.ActionLink("Create Order", "Index", "Order", new { area=""},null) 

这将显示为菜单项。当在 SubApp 区域/应用程序中时,它被路由为

 /SubApp/Order/Index 

而不是

/Order/Index. 

我在 _layout 页面中有这个菜单 ActionLink 代码。

4

1 回答 1

2

当您的应用程序中有区域时,您需要具体说明要指向的控制器和操作。

如果您在您的子应用程序区域内,那么您需要创建的指向根的任何链接都应包含一个空白区域。

@Url.Action("index", "home", new { area = "" }

使用相同的概念,从根控制器到 SubApp 区域的任何 url 都应该在链接中包含该区域:

@Url.Action("index", "home", new { area = "SubApp" }

如果您没有跨越任何边界,则不指定区域将默认为您所在的区域。

于 2013-08-30T01:00:15.507 回答