我有一个包含区域和普通控制器的项目。但是区域路由可以工作,而普通控制器却不工作。
工作正常,但区域路由返回 404:
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
适用于区域路由但不适用于根控制器:
app.MapControllerRoute(
name: "default",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
我还有其他 3 个具有相同场景的项目,但它们可以运行,但在我最近创建的项目上遇到问题。
参考文献:https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/areas ?view=aspnetcore-6.0
您必须指定两条具有不同名称的路线。
之后,您必须使用
[Area]
属性来指定哪个控制器属于哪个区域。您必须将默认路由模板与区域路由模板一起添加,才能使所有默认路由和区域路由正常工作。
我想你可能误解了这个
area:exists
意思。exists
应用了路线必须与区域匹配的约束。{area:...}
与 MapControllerRoute 一起使用:参考:ASP.NET Core 中的区域