Redirect メソッドと RedirectToPage メソッドの違い

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の変更に対してコードの変更が発生しないコードの記述ができます。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2020-01-07
Copyright © 1995–2025 iPentec all rights reserverd.