本文へスキップ
BecomeCoder

Blazorコース · 第2章 画面とデータを連動させる · レッスン5

データバインディング ― @bind で双方向に結ぶ

ブラウザで完結

導入

データバインディングは「C#の変数」と「画面の入力欄」を双方向に連動させる仕組みです。入力欄に打つと変数が変わり、変数が変わると表示も変わる——JavaScriptで手作業だったことが@bindひとつで実現します。

説明

入力欄に@bind="変数"と書くだけ。入力と変数が結びつきます。

<h3>あいさつメーカー</h3>
<input @bind="name" placeholder="名前を入力" />
<p>こんにちは、@name さん!</p>

@code {
    private string name = "";
}
flowchart LR
    INPUT["入力欄 &lt;input&gt;"] <-->|"@bind"| VAR["C♯変数 name"]
    VAR --> VIEW["表示 @name が自動更新"]
  • @bind="name"で入力欄とC#変数name双方向に結ぶ
  • 入力欄に打つとnameが更新され、@nameの表示も追従する
  • DOM操作やイベント登録を手で書かなくてよい(Blazorが差分更新する)
  • 本物のBlazorでは既定で「入力欄を離れたとき」に反映。1文字ごとに反映したいときは@bind:event="oninput"を付ける

やってみよう

入力欄に名前を打つと、下の「こんにちは、〜さん!」がリアルタイムで変わります。nameの初期値を変えたり、<input>をもう1つ足して別の変数に結んだりしてみましょう。

演習

private string city = "";を足し、<input @bind="city" />と「@city にお住まいですね」の表示を追加してください。

ヒント1を見る

@codeprivate string city = "";を足します。

ヒント2を見る

<input @bind="city" placeholder="住んでいる街" /><p>@city にお住まいですね</p>を本文に足します。

次回: ボタンのクリックに反応する@onclickです。

実際に動かしてみよう

下のエディタに .razor を書くと、右側のプレビューにその場で Blazor 風のUIが描画されます。`@名前` の埋め込み、`@bind` の双方向バインディング、`@onclick` のカウンターやトグル、`@if`/`@foreach` の分岐・繰り返しはそのまま動きます。本文の .razor を打ち込んだり、`@code` のフィールドやハンドラを書き換えたりして、状態と画面の連動を確かめながら進めましょう(本物のBlazorではなく描画と簡単な対話を再現した学習用プレビューです。DI・HttpClient・JS相互運用や @code の本格的なC#ロジックは実行されないので、それらは dotnet で実際のプロジェクトを作って試します)。

Blazor (.razor) プレビュー

書いた .razor をその場で Blazor 風の画面に描画する学習用プレビューを読み込みます(本物のBlazorではなく、Razor構文の描画・@bindの双方向バインディング・@onclick/@if/@foreach の簡単な対話を再現したものです。@code の本格的なC#ロジックやDI・HTTP・JS相互運用は実行されません)。
スクロールして表示された時点でも自動で読み込まれます。