本文へスキップ
BecomeCoder

Blazorコース · 第4章 ルーティングとレイアウト · レッスン15

ルートパラメータ ― URLから値を受け取る

ローカル実施

導入

/product/4242のように、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}
  • 受け取った値でデータを取るのはOnParametersSetOnInitializedAsync(第2章のライフサイクル)

まとめ

  • URLの一部は@page "/.../{名前}"[Parameter]で受け取る
  • {名前:型}で型制約をかけられる
  • 受け取った値でデータ取得するのはライフサイクルメソッド

次回: 全ページ共通の枠を作るレイアウトです。