@RenderSection 在 Blazor 中等效?

jby*_*yrd 6 razor blazor blazor-client-side

Razor 页面具有一种机制,您可以在其中引用布局中的命名部分,然后在使用该布局的页面中指定它们。例如,如果您的布局 (_Layout.cshtml) 如下所示:

@using...
...
<!DOCTYPE html>
...
<body>
...
@RenderSection("modals", required: false)
...
Run Code Online (Sandbox Code Playgroud)

然后在您的仪表板页面中,例如,您将拥有:

<div>
...
</div>
...
...
@section modals
{
    <div class="modal-container>...</div>
    <div class="modal-container>...</div>
}
Run Code Online (Sandbox Code Playgroud)

这会将 的内容注入@section modals...到布局中的位置 where @RenderSection("modals")is 中。

如何在 Blazor 中做到这一点?

use*_*754 10

.NET 8 将添加部分支持(来源):

@using Microsoft.AspNetCore.Components.Sections
...
<div class="top-row px-4">
    <SectionOutlet SectionName="TopRowSection" />    
</div>
Run Code Online (Sandbox Code Playgroud)
<SectionContent SectionName="TopRowSection">
    <button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
</SectionContent>
Run Code Online (Sandbox Code Playgroud)


Isa*_*aac 8

不幸的是,Blazor 目前不支持此类功能。Blazor 团队和社区一年多来一直在讨论此功能的必要性,但无济于事。在此处阅读有关 Blazor 中的部分的信息。

但是,如果您正在寻找“临时解决方案”,您可以阅读SteveAndeson关于如何将参数值从 Blazor 组件页面传递到其布局的评论。我知道您正在寻找一种方法来呈现 @Body 和 @EndBody,但原则保持不变:您必须创建一个布局组件而不是默认布局

希望这可以帮助...