无法从 ASP.NET Core MVC 3.1 中的管理区域返回
Unable to route back from the Manage area in ASP.NET Core MVC 3.1
- 我有一个默认的普通未命名区域供普通客户和相关控制器使用:Conrollers。 Controllers forlder中my contrellers上没有任何区域相关的属性。
- 我还有一个区域 "Manage",其中包含 Area\Manage\Controllers 文件夹中与用户管理相关的控制器。
- 我在管理区域中的控制器具有属性:[Area("Manage")](我认为属于:"Conventional and attribute based routing cannot be mixed. In these cases the latter wins",但不确定如何解决此问题)。
- 以下是 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();
});
- 我需要更改什么才能解决我的问题
我能够正常浏览该站点,直到我到达与控制器相关的视图,这些视图被标记为 "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 /
- 我有一个默认的普通未命名区域供普通客户和相关控制器使用:Conrollers。 Controllers forlder中my contrellers上没有任何区域相关的属性。
- 我还有一个区域 "Manage",其中包含 Area\Manage\Controllers 文件夹中与用户管理相关的控制器。
- 我在管理区域中的控制器具有属性:[Area("Manage")](我认为属于:"Conventional and attribute based routing cannot be mixed. In these cases the latter wins",但不确定如何解决此问题)。
- 以下是 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();
});
- 我需要更改什么才能解决我的问题
我能够正常浏览该站点,直到我到达与控制器相关的视图,这些视图被标记为 "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 /