本文へスキップ
BecomeCoder

Blazorコース · 第1章 Blazorの世界 ― C#で作るWeb UI · レッスン4

制御構文 ― @if と @foreach でHTMLを組む

ブラウザで完結

導入

C#のifforeachを、そのままHTMLの中で使えるのがRazorの強みです。「条件によって表示を変える」「一覧をループで描く」——JavaScriptでゴリゴリ書いていたことが、いつものC#の書き方で実現します。

説明

@ifで分岐、@foreachで繰り返し。ブロックは{ }で囲み、中にHTMLを書けるのがポイントです。

<h3>今日の天気</h3>
@if (isSunny)
{
    <p>☀️ 晴れています</p>
}
else
{
    <p>☁️ くもりです</p>
}
<button @onclick="Toggle">天気を切り替える</button>

<h4>対象の都市</h4>
<ul>
@foreach (var city in cities)
{
    <li>@city</li>
}
</ul>

@code {
    private bool isSunny = true;
    private string[] cities = new[] { "東京", "大阪", "札幌" };

    private void Toggle()
    {
        isSunny = !isSunny;   // 状態を変えると自動で描き直される
    }
}
  • @if (条件) { ... } else { ... }——ブロックの中はHTML
  • @foreach (var x in コレクション) { ... }——@xで各要素を埋め込む
  • 状態(isSunny)を変えると、Blazorが自動で画面を描き直す(ボタンで確かめられます)

やってみよう

「天気を切り替える」を押すと、@ifの表示が晴れ⇄くもりで入れ替わります。cities配列に都市を足すと、一覧の<li>が自動で増えます。

演習

citiesに好きな都市を1つ足し、一覧が増えることを確かめてください。さらに@foreachの下に<p>全 @cities.Length 都市</p>を足して件数を表示しましょう。

ヒント1を見る

配列に要素を足すにはnew[] { "東京", "大阪", "札幌", "福岡" }のようにカンマで並べます。

ヒント2を見る

配列の個数は@cities.Lengthで取れます。

次回: 第2章。入力と変数を双方向に連動させる@bindに進みます。

実際に動かしてみよう

下のエディタに .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相互運用は実行されません)。
スクロールして表示された時点でも自動で読み込まれます。