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?}");
});
但它不起作用,可能是因为我不完全理解告诉路由器如何使用Website
区域作为默认值。我在控制器本身之前尝试了各种指令,但它没有用。
我可以征求您的意见吗?
提前谢谢。
答案 0 :(得分:8)
由于您以错误的顺序注册了路线,因此无法正常工作的一个原因。路线从路线表的顶部到底部进行评估,第一场比赛获胜。
另一个问题是你需要制作"默认"如果您希望将请求定向到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?}");
});
参考:Why map special routes first before common routes in asp.net mvc?