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

时间:2018-08-31 02:19:17

标签: asp.net-mvc asp.net-core-2.0 razor-pages asp.net-core-2.1

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文件夹。我知道所有这些都可以再次更改所有规则。

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

2 个答案:

答案 0 :(得分:8)

使用overload of RedirectToPage that takes an object representing RouteValues

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

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

答案 1 :(得分:0)

这对我有用:

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

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

我认为这将是一个受欢迎的问题...感谢Mike Bring,他为我展示了一条道路。

P.S。如果您有Pages文件夹-所有规则将再次更改。这就是“剃刀页面”如何从“ MVC魔术”中耗尽的方式