ASP.NET 核心2:如何带区重定向到页面?

ASP.NET Core 2: how to RedirectToPage with area?

RedirectToPage("Companies") 将重定向到 /Pages/Companies.cshtml(来自 ASP.NET MVC 控制器)

但是如果想重定向到此页面怎么办 /Areas/MyArea/Pages/Companies.cshtml

所有这些和许多其他的都不起作用:

RedirectToPage("/MyArea/Companies.cshtml") 
RedirectToPage("MyArea/Companies.cshtml") 
RedirectToPage("./MyArea/Companies.cshtml") 
RedirectToPage("/MyArea/Companies") 
RedirectToPage("MyArea/Companies") 
RedirectToPage("./MyArea/Companies") 

有时我会收到 "Page not found" 错误。有时得到"Specify a root relative path with a leading '/' to generate a URL outside of a Razor Page"。没有 Pages 文件夹。我知道这一切可以再次改变所有规则。

P.S。使用普通 .SetCompatibilityVersion(CompatibilityVersion.Version_2_1) 配置的 Razor 页面;没有添加特定的路由。

使用overload of RedirectToPage that takes an object representing RouteValues:

return RedirectToPage("/Companies", new { area = "MyArea" });

请注意,如果您在控制器(或 Razor 页面之外的任何地方)中使用 RedirectToPage,则需要 '/'。否则它不是必需的(但仍然有效)。

这对我有用:

return RedirectToPage("/Companies", new { area = "MyArea" });

在普通 .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); 下工作,没有配置特定的路由。

我觉得这将是一个热门问题...感谢 Mike Bring,他为我指明了一条道路。

P.S。如果您有 Pages 文件夹 - 所有规则将再次更改。这就是 "Razor Pages" 尝试从 "MVC magic"

中 运行 的方式