在我的 MVC 应用程序中,我定义了一个默认路由:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new []{ "Demo.Controllers" }
);
我创建了一个名为 Admin 的新区域,它在 AdminAreaRegistration 类中添加了一条路由:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", controller = "Home", id = UrlParameter.Optional }
);
}
在我的主 _Layout 文件中,我尝试执行以下操作:
@Html.RouteLink("Admin", "Admin_default")
它仅在某些情况下有效(例如,如果我已经在管理页面中)。如果我在我网站的 /Home/About 部分,那么 URL 会像这样生成:
/Admin/Home/About
如果我在 Home 控制器的 Index 操作中(在主区域,而不是管理员),那么 URL 会像这样生成:
/Admin
为什么 RouteLink 不像我认为应该在 MVC 中使用区域那样工作?