我正在使用MVC3,并且我的应用程序中有Areas。一般来说,一切都很好,我可以导航到我的区域(例如,管理员=区域,管理员=部门),如下所示:
<%: Html.ActionLink("Departments", "DepartmentIndex", "Department", new { area = "Admin"}, null )%>
然而,我注意到,如果我没有在ActionLink中指定区域,例如
<%: Html.ActionLink("Test", "Index", "Home")%>
如果我已经导航到"管理"区域,这将停止工作。即我的url现在http://localhost/myproj/Admin/Home/Index而不是http://localhost/myproj/Home/Index
有什么想法吗
当创建MVC应用程序/区域时,我的路由都是默认的。即
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "MyProj.Controllers" }
);
}
我的区域注册
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
这是故意的吗?这篇文章建议使用RouteLink而不是ActionLink:说要使用RouteLink是否要求具有";区域";如果应用程序被分组到各个区域,那么actionlink上的routevalue?
此StackOverflow答案正确地指出,如果使用区域,则需要提供Area
名称。
例如。
Html.ActionLink("Home", "Index", "Home", new { Area = "" }, new { })