Razor Pagesでルートパラメーター、拡張URLパスを取得するコードを紹介します。
概要
RazorPagesでは、OnGet, OnPostにパラメーターを記述することで、URLのルートパラメーター(拡張URLパス)を取得できます。
(コードは
こちらの記事を参照)
通常は、OnGet,OnPostのパラメーターで取得する方法が扱いやすいですが、従来のWebFormアプリケーションと同じようにRequestオブジェクトから
ルートパラメーターを取得したい場合があります。
この記事では、RouteValuesオブジェクトを利用して、ルートパラメーターを取得するコードを紹介します。
書式
Request.RouteValues["(パラメーター名)"]
プログラム例
ASP.NET Coreアプリケーションを作成し、以下のファイル、コードを作成します。
コード
@page "/UsingRouteValues01/{mode}/{id:int}"
@model GetUrlParameter.Pages.UsingRouteValues01Model
@{
}
<html>
<head>
</head>
<body>
<h1>Request.RouteValuesでのルートパラメーター取得のデモ</h1>
<p>@Model.ModeOutput</p>
<p>@Model.IDOutput</p>
</body>
</html>
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace GetUrlParameter.Pages
{
public class UsingRouteValues01Model : PageModel
{
public string ModeOutput { get; set; }
public string IDOutput { get; set; }
public void OnGet()
{
if (Request.RouteValues["mode"] != null) {
string param_mode = Request.RouteValues["mode"].ToString();
ModeOutput = string.Format("modeの値:{0}", param_mode);
}
if (Request.RouteValues["id"] != null) {
int param_id = Convert.ToInt32(Request.RouteValues["id"].ToString());
IDOutput = string.Format("id の値:{0:d}", param_id);
}
}
}
}
解説
ルートパラメータは
Request.RouteValues["(パラメーター名)"]
で取得できます。
パラメーターの値は@pageディレクティブでint型で定義している場合でも、string型でRouteValuesオブジェクトに設定されます。
パラメーターがない場合は、nullの値になるため、nullチェックをしてから、文字列の処理をします。
実行結果
プロジェクトを実行し、
(アプリケーションルートURL)/UsingRouteValues01/get/36
のURLにアクセスします。
RazorPageの
UsingRouteValues01
の後ろの
get
がmodeパラメーターの値となり、
36
がidパラメーターの値になります。
RouteValuesオブジェクトからルートパラメーターの値を取得し、ページに表示できている動作が確認できます。
URLを変更してみます。
(アプリケーションルートURL)/UsingRouteValues01/put/582
のURLにアクセスします。
ページに、modeの値として
put
が、idの値として
582
が表示されています。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-07-27
作成日: 2022-07-27