无法从 ASP.NET Core MVC 3.1 中的管理区域返回

Unable to route back from the Manage area in ASP.NET Core MVC 3.1

  1. 我有一个默认的普通未命名区域供普通客户和相关控制器使用:Conrollers。 Controllers forlder中my contrellers上没有任何区域相关的属性。
  2. 我还有一个区域 "Manage",其中包含 Area\Manage\Controllers 文件夹中与用户管理相关的控制器。
  3. 我在管理区域中的控制器具有属性:[Area("Manage")](我认为属于:"Conventional and attribute based routing cannot be mixed. In these cases the latter wins",但不确定如何解决此问题)。
  4. 以下是 Startup.cs 的摘录:
           app.UseEndpoints(endpoints =>
            {

                endpoints.MapControllerRoute(
                    name: "areas",
                    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

                endpoints.MapControllerRoute(
                    name: "categoryFilter",
                    pattern: "product/{action}/{category?}",
                    defaults: new { controller = "Product", action = "List" });

                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");

                endpoints.MapRazorPages();
            });
  1. 我需要更改什么才能解决我的问题 我能够正常浏览该站点,直到我到达与控制器相关的视图,这些视图被标记为 "Manage" 并放置在管理区域中。一旦我点击这些视图,所有其他标准视图都会收到“/管理/”路径,我无法返回它们:
    原来主页是:https://localhost:12345/ and Contact was https://localhost:12345/Contact
    但它变成了:https://localhost:44311/Manage and https://localhost:12345/Manage/Contact

当使用 Url.RouteUrl() 或 Url.Action() 并且您没有在路线数据中指定区域 属性 时, 它停留在最新的区域, 例如(在 manage/Test 上):

@Url.Action("Index", "Home"); //returns /Manage
@Url.Action("Index", "Home", new { area = "" }); //returns /