前回のレクチャーで、Weather.razorをコピーして作成した計測用のページ(MeasurePage.razor、URLは”/measure”)が表示できるところまで進めました。今回は、この計測画面をサイドバーのメニューからも表示できるようにします。
サイドメニューの実体は、Componentsフォルダー内のLayoutフォルダーにある NavMenu.razor です。これをダブルクリックして開きます。
図1 ソリューションエクスプローラーでNavMenu.razorを開く
NavMenu.razorの中には、Home・Counter・Weatherという3つのメニュー項目に対応する、同じ形をしたコードのかたまり(<div class=”nav-item px-3″>〜</div>)が並んでいます。
図2 NavMenu.razor内のHome・Counter・Weatherのメニューブロック
このうち、一番下のWeatherのかたまりをコピーし、その下にそのまま貼り付けます。新しいメニュー項目は、既存のブロックをコピーして必要な部分だけ書き換えるのが手早い方法です。
図3 Weatherのメニューブロックを選択してコピーする
図4 コピーしたブロックをWeatherブロックの下に貼り付ける
貼り付けたブロックのNavLinkタグのhref属性を、計測画面のURLに書き換えます。ここで注意点があります。href属性に指定するURLの先頭には、スラッシュ(/)を付けません。後ろにスラッシュが付くパスであればそのスラッシュは必要ですが、一番先頭のスラッシュは不要です。
図5 href属性を”measure”に書き換える
実際にMeasurePage.razorの@pageディレクティブを確認すると、こちらは @page “/measure” のように先頭にスラッシュが付いています。@pageディレクティブのURL指定とNavMenu側のhref属性とでは、スラッシュの要否が異なる点を覚えておいてください。
図6 MeasurePage.razorの@pageディレクティブでURLを確認
href属性を”measure”に修正できたら、続けてメニューに表示される文字列(Weatherの部分)を「計測」に書き換えます。span要素のCSSクラス(アイコン指定)はそのままで構いません。
図7 href=”measure”に修正し、表示テキストのWeatherを選択
最終的に、追加したメニュー項目のコードは次のようになります。
<div class="nav-item px-3">
<NavLink class="nav-link" href="measure">
<span class="bi bi-list-nested-nav-menu"
aria-hidden="true"></span> 計測
</NavLink>
</div>
修正できたら実行して確認します。サイドメニューの一番下に「計測」という項目が追加されており、これをクリックすると計測画面に遷移し、アドレスバーのURLも /measure になっていることが確認できます。
図8 修正後のコードと、「計測」メニューをクリックして遷移した実行結果
図9 サイドメニューの「計測」をクリックすると計測画面が表示される
このように、NavMenu.razorの中でメニュー項目のブロックをコピーし、href属性で遷移先のURL、表示テキストでメニューのタイトル部分を指定することで、サイドメニューに新しい画面へのリンクを追加できます。同じ要領で、他の画面を追加した際にもサイドメニューから呼び出せるようにしてみてください。
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を適応する