Gre*_*Woz 4 c# asp.net-routing asp.net-core-mvc .net-core asp.net-core
cI经历了有关区域路由的各种帖子,但我仍然无法解决我的问题.
我想以有两条路线的方式拆分我的应用程序.
/Areas/Panel /Areas/Website在每个区域内都有HomeController与行动相对应的适当方法.
每当用户登陆任何1级路线时,我都希望如此:
是针对 /Areas/Website/{controller}/{action}
或者替代
至 /Areas/Panel/{controller}/{action}
我目前的MVC路线是:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "area",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
但它不起作用,可能是因为我不完全理解如何告诉路由器将Website区域用作默认值.我在控制器本身之前尝试了各种指令,但它没有用.
我可以问你的意见吗?
先感谢您.
Nig*_*888 12
其中一个原因是因为您以错误的顺序注册了路由而无法正常工作.路线从路线表的顶部到底部进行评估,第一场比赛获胜.
另一个问题是,MapAreaRoute如果您希望将请求指向该Website区域,则需要将"默认"路由设置为区域路径(使用扩展方法).
app.UseMvc(routes =>
{
routes.MapRoute(
name: "area",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
routes.MapAreaRoute(
name: "default",
areaName: "Website",
template: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
参考:为什么在asp.net mvc中的常用路由之前首先映射特殊路由?