【Blazor】 RazorファイルをHTMLとC#に分割する
- 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つの方法について説明しました。 お好きな方法で是非試してみてください。
この本では、Blazorの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Blazorを扱うすべての開発者にとっての必読書です。 この記事の執筆者も参考にした「Blazor入門」で、あなたのBlazorスキルを飛躍的に向上させませんか?
合わせて読みたい

コンポーネントについて
Blazorは.NET CoreベースのSPA作成フレームワークで、C#とHTMLを使用。この記事はBlazorとRazorコンポーネントの基本を紹介。Blazorアプリは[コンポーネント駆動]で、再利用可能な部品(.razor拡張子)から構成。コンポーネント名は大文字始まりが必要。また、HTMLとC#を組み合わせて、イベントハンドリングやデータバインディングが行える。
更新日:2023/09/06

RenderFragmemtの使い方
Blazorでのページ作成時に共通レイアウトの再利用性を高めるため、RenderFragmentを利用する方法を紹介。RenderFragmentを使ったコンポーネントを作成し、その中でChildContentを通してページ固有の内容を指定。これにより、類似のレイアウトを持つページでもコードの重複を防ぎ効率的な実装が可能になる。
更新日:2023/07/09