ASP.NET Core Blazorで作成した自作のUIコンポーネントのタグ内に任意のHTMLを描画させる方法について説明します。
UIコンポーネントのタグ内に任意のHTMLを描画させる
UIコンポーネントの呼び出し元から任意のHTMLを受け取るには、RenderFragment 型のメンバ変数を public かつ [Parameter] アノテーションを付ける必要があります。 この RenderFragment 型のメンバ変数は、そのまま Razor ページの中に埋め込むことができます。
Components/Pages/Sample.razor:
@page "/RenderFragment"
@using BlazorSample.Components.Shared
<MyPanel Title="部品1">
    文章テスト<br />
    Hello, world!
</MyPanel>
<MyPanel Title="部品2">
</MyPanel>
Components/Shared/MyPanel.razor
<div class="alert alert-success" role="alert">
    <h4 class="alert-heading">@Title</h4>
    @if (ChildContent != null)
    {
        <p>@ChildContent</p>
    }
</div>
@code
{
    [Parameter]
    public string Title { get; set; } = "";
    [Parameter]
    public RenderFragment? ChildContent { get; set; }
}
UIコンポーネントのタグ内に複数のHTMLを描画させる
UIコンポーネントの呼び出し元から任意のHTMLを複数個受け取るには、複数の RenderFragment 型のメンバ変数を public かつ [Parameter] アノテーションを付けることで引数として受け取ることができます。
Components/Pages/Sample.razor:
@page "/MultipleRenderFragment"
@using BlazorSample.Components.Shared
<MyPanelMultipleFragment Title="テストタイトル">
    <ChildContent1>
        1つ目の文章
    </ChildContent1>
    <ChildContent2>
        2つ目の文章
    </ChildContent2>
</MyPanelMultipleFragment>
Components/Shared/MyPanelMultipleFragment.razor
<div class="alert alert-success" role="alert">
    <h4 class="alert-heading">@Title</h4>
    <p>@ChildContent1</p>
    <hr />
    <p>@ChildContent2</p>
</div>
@code
{
    [Parameter]
    public string Title { get; set; } = "";
    [Parameter]
    public RenderFragment? ChildContent1 { get; set; }
    [Parameter]
    public RenderFragment? ChildContent2 { get; set; }
}
以上です。