Blazor01

BlazorでのWebアプリケーション開発手法1【C#】A08_@pageでURLを指定する

本節では、Counter.razor の1行目に書かれている @page ディレクティブについて見ていきます。

@page ディレクティブとURLの関係

Counter.razor を開くと、1行目に次のように書かれています。

@page "/counter"
@rendermode InteractiveServer
 
<PageTitle>Counter</PageTitle>
 
<h1>Counter</h1>
 
<p role="status">Current count: @currentCount</p>
 
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

 

図1 Counter.razor の1行目。@page の後ろに “/counter” と書かれている

@page の後ろにダブルクォーテーションで囲まれた文字列(この場合は /counter)が書かれています。この部分が、このページのURLになります。カーソルを合わせると、これは System.String 型の文字列であることが分かりますが、Blazorのルーティングの仕組みではこの文字列がそのままURLとして扱われます。

図2 @page の後ろの “/counter” の部分がURLになっている

実際にアプリを実行し、左メニューの「Counter」を押すと、この /counter のURLに遷移してCounter画面が表示されます。

図3 「Counter」メニューを押すとURLが /counter になりCounter画面が表示される

この /counter という部分がURLになっていることを確認するため、Home画面の状態からアドレスバーに直接 /counter と入力してみます。

図4 遷移前のHome画面(Hello, world!)

図5 アドレスバーに直接 /counter と入力するとCounter画面に遷移する

手動で /counter と入力しても、メニューを押したときと同じくCounter画面に遷移します。つまり @page で指定した文字列が、そのままそのページのURLになっている、ということです。

URLを変更した場合の挙動

試しに、@page の値を “/counter” から “/counter1” に変更してみます。

図6 @page の値を “/counter1” に変更する

この状態で左メニューの「Counter」を押すと、エラー(404)になります。これは、ナビゲーションメニュー側には「/counter に遷移する」という設定が組み込まれているためです。Counter.razor 側のURLは /counter1 に変わっているため、メニューが指す /counter にはもうページが存在しません。

図7 メニューの「Counter」を押しても /counter1 に変わっているためエラー(404)になる

一方、アドレスバーに /counter1 と手動で入力すると、正しくCounter画面が表示されます。

図8 /counter1 と入力すると正しくCounter画面が表示される

このように、@page でまずはそのページのURLを指定する、と考えておいてください。

BlazorでのWebアプリケーション開発手法1【C#】

A01_はじめに
A02_バージョンの確認
A03_プロジェクトの作成
A04_アプリの実行
A05_サンプルプログラムの構成
A06_Razorコンポーネント
A07_Razor構文
A08_@pageでURLを指定する
A09_@rendermode
A10_PageTitle
A11_HTMLの見出し
A12_pタグ
A13_単方向データバインド
A14_単方向データバインドの詳細
A15_Bootstrap
A16_ボタンクリックイベント
A17_イベント引数の受け取り方
A18_ここまでのまとめ
B01_新しいWebページを追加する方法
B02_サイドバーから画面を表示する
B03_サイドバーのアイコンを変更する方法
B04_計測値を表示する
B05_変数に置き換える
B06_最新の値でデータを更新する
B07_@usingで通常のC#コードを呼び出す
B08_画面遷移_aタグ
B09_画面遷移_aタグの見た目をボタンにする
B10_画面遷移_NavigationManagerでの遷移
B11_画面間のパラメータの受け渡し方法
B12_EscapeDataStringでエスケープする
B13_複数のパラメータを渡す
B14_任意のパラメータにする
B15_string以外の型をパラメータで使う方法
B16_DateTime型をパラメータで渡す方法
B17_引数2個のURLも型指定に変更する
B18_パラメータ属性をつけるときの注意点
B19_OnParametersSet
B20_OnInitialized
B21_OnInitializedが2回通る問題の対応
B22_ブラウザが開いている間の値を記憶する方法
B23_値の受け渡しとしてのProtectedSessionStorage
B24_非同期を想定したUIの制御
C01_一覧表示
C02_非同期での一覧表示
C03_table-striped
D01_入力エリア
D02_双方向データバインド
D03_入力データをリアルタイムで通知する方法
D04_placeholder
D05_入力エリアの横幅の調整
D06_テキストチェンジイベントを拾う方法
D07_プルダウン
D08_プルダウンのbootstrap
D09_プルダウンの選択している値をデータバインドで操作する
D10_プルダウンにリストの値を表示する
D11_プルダウンに未選択行を入れる
D12_プルダウンの入力を禁止する
D13_プルダウンのチェンジイベントを取得する
D14_チェックボックス
D15_チェックボックスにラベルを付ける
D16_複数のチェックボックスを並べる
D17_ラジオボタン
D18_ラジオボタンのデータバインド
D19_ラジオボタンのチェンジイベント
D20_ラジオボタンにbootstrapを適応する