web-dev-qa-db-ja.com

ASP.NET Core 2:エリアでRedirectToPageする方法?

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フォルダはありません。私はこれがすべてのルールを再び変えることができることを知っています。

追伸プレーンな.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);で構成されたRazorページ。特定のルーティングは追加されません。

10

RouteValuesを表すオブジェクトを受け取るRedirectToPageのオーバーロード を使用します。

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

'/'は、コントローラー(またはRazorページの外部)でRedirectToPageを使用する場合に必要です。それ以外の場合は必要ありません(ただし機能します)。

19
Mike Brind

これは私にとってはうまくいきます:

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

プレーン.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);の下で動作します。特定のルーティングは設定されていません。

これは人気の質問になると思います...マイクブリングのおかげで、彼は私に道を教えてくれます。

追伸Pagesフォルダがある場合-すべてのルールがもう一度変更されます。それが、「Razor Pages」が「MVCマジック」を使い果たす方法です。

0