Blazor01

BlazorでのWebアプリケーション開発手法1【C#】A13_単方向データバインド

本レクチャーでは、Counter.razor画面を題材に、Razorコンポーネントにおける「単方向データバインド」の書き方を解説します。

@codeブロックとC#コード

Counter.razorの下部にある@codeで囲まれた部分には、通常のC#コードを記述できます。ここには、currentCountというint型のフィールドと、そのフィールドをインクリメントするIncrementCountメソッドが定義されています。

図1 Counter.razorのコード全体(@currentCountの記述箇所)

HTML側で@を使ってC#の変数を参照する

@codeブロック内で宣言した変数は、先頭に@を付けることでHTML側から参照できます。例えばpタグの中に@currentCountと書くと、そのcurrentCountフィールドの値がそのままHTMLに埋め込まれて表示されます。

図2 @currentCountにカーソルを合わせると、Counter.currentCountフィールド(int型)であることが確認できる

このように変数の頭に@を付けてデータバインドしておくと、その変数の値が変わったときに、画面に表示されている値も自動的に追従して変わります。

これが「単方向データバインド」

この書き方は「単方向データバインド」と呼ばれます。ユーザーからの入力を受け付けるものではなく、あくまでプログラム側が持っている値を画面に表示するだけ、という一方向の連携になっている点がポイントです。値をただ表示したいだけの場合は、このように@をつけて変数名を書くだけで実現できます。

図3 @currentCountの記述箇所に「単方向データバインド」の吹き出し

動作確認:初期値を変更してみる

実際の挙動を確認するため、currentCountの初期値を0から999に書き換えます。

@code {
    private int currentCount = 999;
 
    private void IncrementCount()
    {
        currentCount++;
    }
}

 

図4 currentCountの初期値を999に変更

この状態でアプリを実行すると、画面上のCurrent countBBBの表示も初期値の999になっていることが確認できます。

図5 実行結果。Current countBBB: 999 と表示される

さらに「Click me」ボタンを押すと、IncrementCountメソッドが呼ばれてcurrentCountがインクリメントされ、その都度、画面の表示もリアルタイムに更新されていきます。

図6 ボタンを複数回クリックし、Current countBBB: 1007 のように値が増えていく様子

まとめ

C#コードの変数の頭に@を付けてHTML側に埋め込むことで、プログラムの値をそのまま画面に表示する「単方向データバインド」ができます。値が変わればHTML側の表示も連動して変わるため、値を表示するだけでよい場面ではこのシンプルな書き方が有効です。

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を適応する