導入
/product/42の42のように、URLの一部を「値」として受け取りたいことがあります。商品ID・ユーザー名・記事のスラッグなど、実務では頻出です。Blazorでは@pageに{ }を書いて受け取ります。
説明
@page "/product/{Id:int}"のように波かっこでプレースホルダを書き、同名の[Parameter]で受け取ります。
@page "/product/{Id:int}"
<h1>商品 #@Id の詳細</h1>
@code {
[Parameter] public int Id { get; set; }
protected override void OnParametersSet()
{
// Id を使って、その商品のデータを取得する、など
}
}
{Id}でURLの一部を受け取り、[Parameter]のプロパティに入る{Id:int}のように型制約を付けられる(int/guid/boolなど)。合わないURLはマッチしない- 任意パラメータは
{Id:int?}、末尾をまとめて受けるなら{*rest} - 受け取った値でデータを取るのは
OnParametersSet/OnInitializedAsync(第2章のライフサイクル)
まとめ
- URLの一部は
@page "/.../{名前}"+[Parameter]で受け取る {名前:型}で型制約をかけられる- 受け取った値でデータ取得するのはライフサイクルメソッド
次回: 全ページ共通の枠を作るレイアウトです。