例えば、アプリケーションのルート直下に、Users フォルダの Index.cshtml をマッピングする方法です。
URL:https://localhost:44306/abc
→ abc はユーザー名です。
サービスの設定
Program.cs を編集します。AddRazorPagesOptions に、Conventions.AddPageRoute メソッドで、Users フォルダの index.cshtml と、 ルート直下 + パラメータ(ここでは name)の組み合わせをマッピングします。
//Program.cs
builder.Services.AddRazorPages().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Users/Index", "/{name}");
});
cshtml の実装
Users\Index.cshtml にて、@page の後に、パラメータである "{name}" を追記します。
<!-- Users\Index.cshmlt -->
@page "{name}"
@model ProjectX.Pages.Users.IndexModel
@{
}
<div>
User page here...
</div>
<div>
ユーザー名:@Model.UserName
</div>
cshtml.cs の実装
そして、Index.cshtml.cs の OnGet メソッドで name パラメータを受け取れるように変更します。
//Index.cshtml.cs
public class IndexModel : PageModel
{
public string UserName { get; set; }
public void OnGet(string name)
{
UserName = name;
}
}
実行結果の確認
アプリケーションを実行し、https://localhost:44306/abc を開くと、Users\Index.cshtml が呼び出され、パラメータも取得できていることが分かります。
