
Templated components accept UI content as parameters using RenderFragment. This lets you build reusable layout containers — modals, cards, tables — where the caller controls the inner content.
// Card.razor
<div class="card">
@ChildContent
</div>
@code {
[Parameter] public RenderFragment? ChildContent { get; set; }
}
// Usage:
<Card>
<h2>My Title</h2>
<p>Any content here.</p>
</Card>// Dialog.razor
<div class="dialog">
<header>@TitleContent</header>
<main>@BodyContent</main>
</div>
@code {
[Parameter] public RenderFragment? TitleContent { get; set; }
[Parameter] public RenderFragment? BodyContent { get; set; }
}Pass data into the template with RenderFragment<T>:
[Parameter] public RenderFragment<Product> ItemTemplate { get; set; }
// Usage:
<ItemTemplate Context="product">
<span>@product.Name</span>
</ItemTemplate>Reference:
TaskLoco™ — The Sticky Note GOAT