Lightning Blog
Blazor記事イメージ画像

【Blazor】 RazorファイルをHTMLとC#に分割する

更新日:2023/09/06
コンポーネントは、通常画面側とロジックのコードが共存する状態になっていますが、 ファイルを分けて分離して書くこともできます。 この分離のことを[コードビハインド]と呼びます。 2通りの方法がありますので、それぞれ解説していきたいと思います。

    目次

  • Partialクラスを使用する方法
  • 継承を使用する方法
  • まとめ

Partialクラスを使用する方法

プロジェクト作成時に最初から存在するCounter.razorを分割していきます。 コードの初期状態は次のようになっています。


@page "/counter"

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

まず、ロジック側のコードを格納するCounter.razor.csというクラスを作成します。 その際、[分離するrazorのファイル名 + .cs]という命名規則に従ってC#のクラスを作成してください。 そうすると、razorファイルの傘下にcsファイルが自動的に入る仕組みになっています。

クラス作成
クラス作成

クラスを作成したら、razorファイルからロジック部分のコードをコピーして、 新しく作成したCounter.razor.csにペーストします。 そして、Counter.razor.csのクラスをPartialクラスへ変更します。


namespace Blazor_SplitComponent.Pages;

public partial class Counter
{
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

これで分離完了です。


継承を使用する方法

セクション画像

継承元のクラスCounterBase.csを作成します。 Partialクラスを用いた場合と同様に、元のCounter.razorからC#のコード&ペーストします。 razorファイルにロジック側のコードを継承するには、ComponentBaseクラスを継承している必要があるため、 それを継承するのを忘れないでください。


using Microsoft.AspNetCore.Components;

namespace Blazor_SplitComponent.Classes;

public class CounterBase : ComponentBase
{
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

コンポーネントに先ほど作成したクラスを継承していきます。 コンポーネントからロジック部分のクラスを継承するには、@inheritsを使用する必要があります。


@using Blazor_SplitComponent.Classes;

@inherits CounterBase

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

これで作業完了になります。


まとめ

セクション画像

この記事では、BlazorコンポーネントのHTMLとC#コードを分割する2つの方法について説明しました。 お好きな方法で是非試してみてください。


ブログ内の記事で書かれているサンプルコードは、GitHubから確認する事ができます。 是非参考にしてみてください。

この本では、Blazorの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Blazorを扱うすべての開発者にとっての必読書です。 この記事の執筆者も参考にした「Blazor入門」で、あなたのBlazorスキルを飛躍的に向上させませんか?

合わせて読みたい

カード画像
属性スプラッティングの使い方

Blazorの属性スプラッティング機能は、コンポーネントに複数の属性を一括で適用し、コードの再利用性を向上させるための手段です。基本的には、@attributesを使用し、属性と値のペアを格納したIDictionary<string, object>型を渡します。非文字列型の属性値もサポートしており、コンポーネントでも属性スプラッティングが利用可能です。ただし、属性の優先度に注意が必要です。これにより、Blazorアプリケーションの開発効率と柔軟性が向上します。

更新日:2023/07/19

カード画像
SignalRのまとめ

Blazor ServerアプリケーションにおけるSignalRの基本と、切断および再接続のシナリオを解説します。接続オプションのカスタマイズ手順について詳しく説明しています。

更新日:2024/08/06

An error has occurred. This application may no longer respond until reloaded. Reload 🗙