在早期版本的ASP.NET中,并使用MVC 5,我可以在AreaRegistraion中设置以下路由:
context.MapRoute(
"pfrecent",
"Forums/Recent/{page}",
new { controller = ForumController.Name, action = "Recent", page = 1 },
new[] { "PopForums.Controllers" });
这会将
/Forums/Recent
路由到论坛控制器及其最近的操作。但是,我无法弄清楚如何使其在ASP.Net 5 / MVC 6中工作。我已将[Area("Forums")]
添加到控制器类,并从Startup类使用了此路由:routes.MapRoute(
"pfrecent",
"Forums/Recent/{page}",
new { controller = ForumController.Name, action = "Recent", page = 1 });
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
但是,它解析为
/Forums/Forum/Recent?page=1
。目的是继续使用/Forums/Recent
。 最佳答案
我们使用它来启用MVC 6中的区域:
// Configure MVC routing
app.UseMvc(routes =>
{
// Areas support
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
// Default routing
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
第一条路线用于区域,第二条路线用于主要内容。