在我的应用中,我有两个区域:Portal
和Admin
。我想在XXXAreaRegistration.cs
个文件中配置路由。
对于/{controller}/{action}
小组的Portal
和/admin/{controller}/{action}
,我想要的是Admin
。
我尝试了以下配置以实现:
// AdminAreaRegistration.cs
context.MapRoute("Admin",
"admin/{controller}/{action}",
new { action = "Index", controller = "Admin" });
// PortalAreaRegistration.cs
context.MapRoute("Portal",
"{controller}/{action}",
new { action = "Index", controller = "Portal" });
对于/
我得到了我的Portal/Index.cshtml
,但对于/admin
,我得到了404
...我想在第二种情况下它会找到AdminController
Portal
区域,这就是我获得404
的原因。但是如何制定解决方法来创建这样的路由?
答案 0 :(得分:1)
,因为您的默认控制器是管理员设置默认参数作为现有控件
我想在称为admin
的区域中没有控制权UPTADE FOR NAME SPACE
修改代码,如下所示
context.MapRoute("Admin",
"admin/{controller}/{action}",
new { action = "Index", controller="Home"},
new string[] { "MyApp.Admin.Controllers" } // specify the new namespace);
答案 1 :(得分:1)
要解决您当前为您的Portal区域注册添加约束的路由冲突:
// PortalAreaRegistration.cs
context.MapRoute(
"Portal",
"{controller}/{action}",
new { action = "Index", controller = "Portal" },
new { controller = "^(?!.*admin).*$" }
);
这将确保将Portal区域映射到除{controller}/{action}
之外的所有admin/*
,因为您希望管理区域提供此服务。
当然,由于显而易见的原因,您的Portal区域中不能有一个名为AdminController
的控制器。