ASP.NET Core Razor Pages - ルート直下のパスと特定ページ(cshtml)をマッピングする方法
📋 目次(クリックで展開)
例えば、アプリケーションのルート直下に、Users フォルダの Index.cshtml をマッピングする方法です。
URL:https://localhost:44306/abc
→ abc はユーザー名です。
サービスの設定
Program.cs を編集します。AddRazorPagesOptions に、Conventions.AddPageRoute メソッドで、Users フォルダの index.cshtml と、 ルート直下 + パラメータ(ここでは name)の組み合わせをマッピングします。
//Program.csbuilder.Services.AddRazorPages().AddRazorPagesOptions(options =>{ options.Conventions.AddPageRoute("/Users/Index", "/{name}");});cshtml の実装
Users\Index.cshtml にて、@page の後に、パラメータである “{name}” を追記します。
<!-- Users\Index.cshtml -->@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 が呼び出され、パラメータも取得できていることが分かります。

参考情報:Razor Pages routing with a prefix id
💬 コメント