- RazorPagesで指定したURLにリダイレクトする
- RazorPagesで指定したページ名のページにリダイレクトする
RazorPages でリダイレクトを実装するコードと実行結果を紹介します。
RazorPagesでリダイレクトする場合は、OnGet()
OnGet*()
OnPost()
OnPost*()
メソッドで戻り値にIActionResultを返す記述にして、
戻り値に、Redirect()
メソッドや RedirectPermanent()
メソッドの戻り値を返します。
ASP.NET Coreアプリケーションを作成し、以下のファイルを作成しコードを記述します。
@page
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@model RazorPagesRedirect.Pages.Redirect301Model
@{
}
<html>
<head></head>
<body>
<form method="post">
<h2>302リダイレクトのデモ</h2>
<input type="submit" value="Redirect"/>
</form>
</body>
</html>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace RazorPagesRedirect.Pages
{
public class Redirect302Model : PageModel
{
public void OnGet()
{
}
public IActionResult OnPost()
{
return Redirect("https://www.ipentec.com");
}
}
}
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();
app.Run();
OnPostメソッドを実装し、戻り値にRedirectメソッドの結果のRedirectResultオブジェクトを返します。Redirectメソッドの第一引数に、
リダイレクト先のページのURLを与えます。
public IActionResult OnPost()
{
return Redirect("https://www.ipentec.com");
}
フォームタグ内にサブミットボタンを配置します。フォームのメソッドがPOSTになっているため、サブミットボタンで
POST処理が実行されます。RazorPagesでは、POSTされたタイミングでページモデルクラスのOnPost()
メソッドが呼び出されます。
<form method="post">
<h2>302リダイレクトのデモ</h2>
<input type="submit" value="Redirect"/>
</form>
RazorPageのPOST処理を正しく動作させるためにはタグヘルパが必要です。タグヘルパーの追加の記述を忘れないようにします。
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
プロジェクトを実行し、(アプリケーションルートURL)/Redirect302
のURLにアクセスします。下図のページが表示されます。
ページ内の[Redirect]ボタンをクリックします。
ページがリダイレクトされ、リダイレクト先のページが表示されました。
リダイレクトの種類を調べます。Webブラウザの開発ツールで、リダイレクト時のレスポンスを確認します。
Redirect302
ページへPOST処理をしており、レスポンスで状態コード301が返り、リダイレクトしている動作が確認できます。
RedirectPermanent を利用します。
@page
@model RazorPagesRedirect.Pages.Redirect301Model
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
}
<html>
<head></head>
<body>
<form method="post">
<h2>301リダイレクトのデモ</h2>
<input type="submit" value="Redirect"/>
</form>
</body>
</html>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace RazorPagesRedirect.Pages
{
public class Redirect301Model : PageModel
{
public void OnGet()
{
}
public IActionResult OnPost()
{
return RedirectPermanent("https://www.ipentec.com");
}
}
}
ページの実装は先のデモと同じです。
<form method="post">
<h2>301リダイレクトのデモ</h2>
<input type="submit" value="Redirect"/>
</form>
ページモデルクラスのOnPost()
メソッドでは、RedirectPermanent()
メソッドの戻り値をOnPostメソッドの戻り値として返しています。
public IActionResult OnPost()
{
return RedirectPermanent("https://www.ipentec.com");
}
プロジェクトを実行し、(アプリケーションルートURL)/Redirect301
のURLにアクセスします。下図のページが表示されます。
ページ内の[Redirect]ボタンをクリックします。
ページがリダイレクトされ、リダイレクト先のページが表示されました。
リダイレクトの種類を調べます。Webブラウザの開発ツールで、リダイレクト時のレスポンスを確認します。
Redirect301
ページへPOST処理をしており、レスポンスで状態コード301が返り、リダイレクトしている動作が確認できます。
Razor Pagesで301, 302 のリダイレクト処理を実装できました。