到目前为止,我无法完成这项工作,我需要一些帮助。我有一个基本的MVC 5站点,我添加了一个名为Administration的区域。对于我的生活,我无法弄清楚如何正确设置区域的默认控制器/操作。
在我的网站中,我有一个名为Admin的区域,一个名为Admin的控制器(带索引方法和视图),这是区域注册:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
name: "Admin_base",
url: "Admin",
defaults: new { area = "Admin", controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
第一个MapRoute允许我浏览http://myapplication/Admin
并显示我设置的视图(管理员/索引),URL保持http://myapplication/Admin
(这就是我想要的)。现在,通过添加它,它会打破到控制器的任何进一步路由。因此,当我尝试导航到管理区域中的菜单控制器时,它会失败。
有没有正确的方法呢?
即。我需要正确地设置http://myapplication/Admin/Menu/Create
路由,但还需要保留该区域的默认控制器/操作。
答案 0 :(得分:4)
您应该能够将它们组合成一个:
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
defaults: new { area = "Admin",
controller = "Admin",
action = "Index",
id = UrlParameter.Optional }
);
通过指定默认值,您应该能够调用/Admin/
,其余参数将设置为默认值。
答案 1 :(得分:1)
如果您使用相同的控制器名称区域和默认值(例如:HomeController)。使用该
的命名空间context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new {
area = "Admin",
controller = "Home",
action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "{{Namespace}}.Areas.Admin.Controllers" }
);
默认为
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional },
namespaces: new[] { "{{Namespace}}.Controllers" }
);