我正在使用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的通用菜单,应指向根控制器/操作。但是,当我在SubApp中时,这些菜单URL会发生变化,例如:
/SubApp/Home/Index
应该是:
/Home/Index
我怀疑上面的“SubApp_default”路由导致了这个问题。我希望“Root”网址使用“Root”路由,如果你得到我的漂移,并且只使用区域特定的URL来使用区域路由。
请注意。
非常感谢。
EDIT1:
我正在使用ActionLinks,即:
@Html.ActionLink("Create Order", "Index", "Order", new { area=""},null)
将显示为菜单项。在SubApp区域/应用程序中,这将被路由为
/SubApp/Order/Index
而不是
/Order/Index.
我在_layout页面中有这个菜单ActionLink代码。
答案 0 :(得分:2)
如果您的应用中有区域,则需要具体说明要指向的控制器和操作。
如果您在SubApp区域内,那么您需要创建指向根目录的任何链接都应包含空白区域。
@Url.Action("index", "home", new { area = "" }
使用相同的概念,从根控制器到SubApp区域的任何URL都应该包含链接中的区域:
@Url.Action("index", "home", new { area = "SubApp" }
如果您没有跨越任何边界,则不指定该区域将默认为您所在的区域。