引き続き、Counter.razorのボタン部分を見ていきます。button要素には次のように記述されています。
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
図1 Counter.razorのボタン部分(@onclick=”IncrementCount”)
@onclickの「@」は、この部分がC#コードと関連付けられていることを示す記号です。一方で「onclick」自体はJavaScriptのイベント名であり、@の後ろにはJavaScriptのイベント名を書く、という書き方になっています。今回は「クリックしたときに」処理を行いたいので、onclickイベントを指定しています。
JavaScriptのイベント名は、「JavaScript イベント 一覧」などで検索すると一覧で確認できます。たとえばonclickは「マウスのボタンを1度押して離したとき」に発生するイベントと説明されています。
図2 JavaScriptイベント一覧サイトでのonclickの説明
また、Webで調べる以外にも、コードエディタ上で「@on」まで入力すると、稲妻マークのアイコンが付いた候補としてイベント名の一覧が表示されるため、そこから探すこともできます。
図3 「@on」入力時に表示されるイベント名の候補(稲妻マークがイベント)
@onclick=”IncrementCount”の後半部分にあるIncrementCountは、@codeブロック内に定義されているメソッドです。つまりこの記述は、「クリックイベントが発生したらIncrementCountメソッドを呼び出す」という、JavaScriptのイベントとC#のメソッドを結びつけるバインドを表しています。
実際にIncrementCountメソッド内のcurrentCount++;の行にブレークポイントを設置してから実行し、ボタンをクリックしてみます。
図4 currentCount++;の行にブレークポイントを設置した状態
ボタンをクリックすると、設置したブレークポイントで処理が停止します。これにより、クリックイベントが発生した際に確かにIncrementCountメソッドが呼び出されていることが確認できます。
図5 ボタンクリックによりブレークポイントで処理が停止した状態
続いて、button要素内の「Click me」という文字列について解説します。これは単なるボタンの表示テキストです。試しに「Click me」を「Click meAAAAA」に書き換えます。
図6 ボタンのテキストを「Click meAAAAA」に書き換えているところ
実行すると、ボタンの表示が「Click meAAAAA」に変わっていることが確認できます。
図7 ボタンの表示テキストが「Click meAAAAA」に変わった実行結果
以上で、ボタンクリックイベントの基本的な仕組み(@onclickによるJavaScriptイベントと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を適応する