我经常使用以下标记:
<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>
Run Code Online (Sandbox Code Playgroud)
如何在多个组件中重用具有相同参数的 DropDownListTemplates?
我在想,我创建了一个继承自 DropDownListTemplates 的自定义类:
@inherits DropDownListTemplates<Customer>
@code {
override void OnAfterRender(bool firstRender)
{
// this.ItemTemplate = ??
base.OnAfterRender(firstRender);
}
}
Run Code Online (Sandbox Code Playgroud)
但是如何设置基类中的 RenderFragment 参数 ItemTemplate 呢?
我想避免将 SfDropDownList 包装到自定义组件
Dou*_*dle 10
您可以设置 RenderFragment 参数的默认值,如下所示。
@ChildContent
@code {
[Parameter] public RenderFragment ChildContent {get; set;} = @<p>Some text here</p>;
}
Run Code Online (Sandbox Code Playgroud)
编辑添加:您还可以RenderFragment
在代码中定义可重用的(.NET Core 3.1 - 5.0)。
public static RenderFragment SayHello = __builder =>
{
<h1>Hello!</h1>
};
Run Code Online (Sandbox Code Playgroud)
委托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>
};
}
Run Code Online (Sandbox Code Playgroud)
来源:ASP.NET Core Blazor Web Assembly 性能最佳实践
从 .NET 6.0 开始,您将可重用定义RenderFragment
为
private RenderFragment RenderWelcomeInfo = @<p>Welcome to your new app!</p>;
Run Code Online (Sandbox Code Playgroud)
参数为
<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>;
}
Run Code Online (Sandbox Code Playgroud)
来源:ASP.NET Core Blazor Web Assembly 性能最佳实践
归档时间: |
|
查看次数: |
8199 次 |
最近记录: |