Blazor:如何创建可重用的渲染片段



我经常使用以下标记:

<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程序集性能最佳实践

相关内容

  • 没有找到相关文章

最新更新