Asp.net-Mvc

ASP.NET Core 2:如何使用區域 RedirectToPage?

  • September 3, 2018

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") 

有時我會收到“找不到頁面”錯誤。有時會得到“指定帶有前導 ‘/’ 的根相對路徑以在 Razor 頁面之外生成 URL”。沒有Pages文件夾。我知道這一切都可以再次改變所有規則。

PS Razor 頁面配置為普通 .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); 沒有添加特定的路由。

使用RedirectToPage 的重載,它接受一個表示 RouteValues 的對象

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

請注意,'/'如果您RedirectToPage在控制器(或 Razor 頁面之外的任何地方)中使用,則需要。否則它不是必需的(但仍然可以工作)。

這對我有用:

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

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

我覺得這將是一個受歡迎的問題……感謝 Mike Bring,他為我指明了一條道路。

PS 如果您有 Pages 文件夾 - 所有規則將再次更改。這就是“Razor Pages”如何試圖擺脫“MVC 魔法”的方式

引用自:https://stackoverflow.com/questions/52107626