ASP.NET 具有区域的核心 2 默认路由
ASP.NET Core 2 default route having areas
cI 查看了有关区域路由的各种帖子,但我仍然无法解决我的问题。
我想以有两条路线的方式拆分我的申请。
/Areas/Panel
/Areas/Website
每个区域中都有HomeController
和对应于操作的适当方法。
我希望每当用户登陆任何 1 级路线时,即:
- /家
- /联系人
- /about/company
- 等等
指向/Areas/Website/{controller}/{action}
或者
- /面板
- /panel/home
- /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
区域。我在控制器本身之前尝试了各种指令,但它没有用。
能请教一下吗?
提前谢谢你。
它不起作用的一个原因是您以错误的顺序注册了路由。路线从路线的顶部到底部进行评估 table,第一场比赛获胜。
另一个问题是,如果你想让 "default" 路由直接请求到 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?}");
});
参考:
cI 查看了有关区域路由的各种帖子,但我仍然无法解决我的问题。
我想以有两条路线的方式拆分我的申请。
/Areas/Panel
/Areas/Website
每个区域中都有HomeController
和对应于操作的适当方法。
我希望每当用户登陆任何 1 级路线时,即:
- /家
- /联系人
- /about/company
- 等等
指向/Areas/Website/{controller}/{action}
或者
- /面板
- /panel/home
- /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
区域。我在控制器本身之前尝试了各种指令,但它没有用。
能请教一下吗?
提前谢谢你。
它不起作用的一个原因是您以错误的顺序注册了路由。路线从路线的顶部到底部进行评估 table,第一场比赛获胜。
另一个问题是,如果你想让 "default" 路由直接请求到 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?}");
});
参考: