Blazor01

BlazorでのWebアプリケーション開発手法1【C#】D03_入力データをリアルタイムで通知する方法

今回は、入力データをリアルタイムで更新する方法を解説します。

Home.razorの入力欄はすでに@bindによって_areaNameプロパティと双方向データバインドされています。この状態で、入力した値がどのタイミングでプログラム側に反映されるかを確認していきます。

図1 Home.razorの現在のコード(@bind=”_areaName”)

通常、@bindによるデータバインドは、入力欄からフォーカスが外れた(ロストフォーカスした)タイミングで値が更新されます。文字を入力している最中は、まだプログラム側に値は反映されません。

図2 「高松AA」と入力している途中の画面

この更新タイミングを画面上で確認できるようにするため、入力欄の下に現在の_areaNameの値を表示するpタグを追加します。

<input type="text" @bind="_areaName" class="form-control"/>
<p>パラメータを @_areaName で送信します</p>

 

_areaNameの前後には、表示を見やすくするために半角スペースを入れています。この状態で実行すると、初期値の「高松」がそのままpタグに表示されます。

図3 実行直後の画面。「パラメータを 高松 で送信します」と表示される

ここで入力欄に「A」「AA」と文字を追加していっても、pタグの表示はまだ「高松」のまま変化しません。

図4 「高松AAA」と入力してもpタグの表示は「高松」のまま

この状態で入力欄からフォーカスを外す(ロストフォーカスする)と、pタグの表示が「高松AAA」に更新されます。

図5 ロストフォーカス後、「パラメータを 高松AAA で送信します」に更新された画面

続けて「姫路」と入力し直しても、同様にフォーカスが外れるまでは表示が変わらず、ロストフォーカスして初めて「姫路」に更新されます。

図6 ロストフォーカス後、「パラメータを 姫路 で送信します」に更新された画面

文字を入力した瞬間にリアルタイムで値を反映したい場合は、input要素に@bind:event=”oninput”属性を追加します。

<input type="text"
    @bind="_areaName"
    @bind:event="oninput"
    class="form-control"/>

 

図7 @bind:event=”oninput”を追加したコード

これを実行し、入力欄に文字を入力すると、フォーカスを外さなくても入力した瞬間にpタグの表示がリアルタイムで更新されるようになります。

図8 「高松AAAA」と入力中でもリアルタイムに反映される画面

図9 「姫路」と入力中でもリアルタイムに反映される画面

この状態で「計測画面を開く」のリンクをクリックすると、リアルタイムで更新された値(姫路)が正しくURLパラメータとして渡されていることが確認できます。

図10 計測画面に遷移し、計測場所に「姫路」が渡されている画面

このように、データバインドの値を入力と同時にリアルタイムで反映させたい場合は、@bind:eventにoninputを指定することで実現できます。

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