Redirect メソッドと RedirectToPage メソッドの違い - ASP.NET Core

Redirect メソッドと RedirectToPage メソッドの違いを紹介します。

概要

Razor PagesなどのASP.NET Core Webアプリケーションでリダイレクトする際に、Redirect メソッドと RedirectToPage メソッドがあります。2つのメソッドの動作の違いを紹介します。
メモ
Redirect, RedirectToPageの詳細については以下のページも参照してください。

書式

Redirect メソッド

Redirect(リダイレクト先のURL)

RedirectToPageメソッド

RedirectToPage(ページのファイル名の拡張子が無い名称)

動作の違い

Redirectメソッドにはリダイレクト先のURLを与えますが、RedirectToPageメソッドには、ページのcshtmlのファイル名の拡張子が無い名称を与えます。URLはファイル名から対応するURLを自動で取得して遷移します。

こちらのASP.NET Coreアプリケーションで、OnPostのコードは下記です。Redirectメソッドを利用していますので、引数にはURLを与えます。リダイレクト先は(アプリケーションのルートURL)/ButtonComplete になります。
public IActionResult OnPost()
{
  return Redirect("/ButtonComplete");
}

上記のコードをRedirectToPageに変更する場合、下記の記述になります。/Pages/ButtonResult.cshtml ファイルのページにリダイレクトさせるため、RedirectToPageメソッドに与える引数は /ButtonResult になります。
public IActionResult OnPost()
{
  return RedirectToPage("/ButtonResult");
}

ファイルの位置はPagesフォルダをルートとしているため /Pages/Result/ButtonFinish.cshtml ファイルのページにリダイレクトさせる場合は下記の記述になります。
public IActionResult OnPost()
{
  return RedirectToPage("/Result/ButtonFinish");
}

RedirectToPage を指定すると、cshtmlファイル中の @page ディレクティブで指定したURLとは独立してファイル名でリダイレクト先を指定できるため、URLの変更に対してコードの変更が発生しないコードの記述ができます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-03-25
作成日: 2020-01-07
iPentec all rights reserverd.