我经常使用以下标记:
<SfDropDownList DataSource="@Model.Customers" TItem="Customer" TValue="Customer">
<DropDownListTemplates TItem="Customer">
<ItemTemplate Context="customer">
<span>@customer.Name</span><span class="float-right">@customer.Site</span>
</ItemTemplate>
</DropDownListTemplates>
</SfDropDownList>
如何在多个组件中重用具有相同参数的DropDownListTemplates
我在想,我创建了一个从DropDownListTemplates:继承的自定义类
@inherits DropDownListTemplates<Customer>
@code {
override void OnAfterRender(bool firstRender)
{
// this.ItemTemplate = ??
base.OnAfterRender(firstRender);
}
}
但是如何设置基类中的RenderFragment参数ItemTemplate?
我想避免将SfDropDownList包装到自定义组件
您可以设置RenderFragment参数的默认值,如下所示。
@ChildContent
@code {
[Parameter] public RenderFragment ChildContent {get; set;} = @<p>Some text here</p>;
}
来源:blazor-university.com
编辑添加:您还可以在代码(.NET Core 3.1-5.0(中定义可重用的RenderFragment
。
public static RenderFragment SayHello = __builder =>
{
<h1>Hello!</h1>
};
RenderFragment
委托也可以接受参数。
<div class="chat">
@foreach (var message in messages)
{
@DisplayChatMessage(message)
}
</div>
@code {
RenderFragment<ChatMessage> DisplayChatMessage = message => __builder =>
{
<div class="chat-message">
<span class="author">@message.Author</span>
<span class="text">@message.Text</span>
</div>
};
}
资料来源:ASP。NET核心Blazor Web程序集性能最佳实践
启动。NET 6.0中定义了一个可重用的RenderFragment
作为
private RenderFragment RenderWelcomeInfo = @<p>Welcome to your new app!</p>;
参数为
<div class="chat">
@foreach (var message in messages)
{
@ChatMessageDisplay(message)
}
</div>
@code {
private RenderFragment<ChatMessage> ChatMessageDisplay = message =>
@<div class="chat-message">
<span class="author">@message.Author</span>
<span class="text">@message.Text</span>
</div>;
}
资料来源:ASP。NET核心Blazor Web程序集性能最佳实践