c我浏览了有关区域路由的各种帖子,但仍然无法解决我的问题。
我想以两条路线的方式拆分我的应用程序。
-
/Areas/Panel
-
/Areas/Website
在每个区域内,都有与行动相对应HomeController
和适当的方法。
我希望每当用户降落到任何 1 级路由时,即:
- /家
- /联系 /
- 关于/公司
- 等。
被定向到/Areas/Website/{controller}/{action}
或者对于
- /面板 /
- 面板/首页 /
- panel/users/2
- 等
到/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
区域作为默认值。我在控制器本身之前尝试了各种指令,但它不起作用。
我可以征求你的意见吗?
提前谢谢你。
不起作用的一个原因是您以错误的顺序注册了路由。从路由表的顶部到底部评估路线,第一场比赛获胜。
另一个问题是,如果您希望将请求定向到Website
区域,则需要将"默认"路由(使用 MapAreaRoute
扩展方法(设置为区域路由。
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?}");
});
参考:为什么在 asp.net MVC 中先映射特殊路由,然后再映射公共路由?