例えば、アプリケーションのルート直下に、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 が呼び出され、パラメータも取得できていることが分かります。
