在Blazor中是否有类似于@RenderSection的等效物?

15

Razor页面有一个机制,您可以在布局中引用命名区域,并在使用该布局的页面中指定它们。例如,如果您的布局(_Layout.cshtml)如下所示:

@using...
...
<!DOCTYPE html>
...
<body>
...
@RenderSection("modals", required: false)
...

然后在您的仪表板页面中,例如,您会看到:

<div>
...
</div>
...
...
@section modals
{
    <div class="modal-container>...</div>
    <div class="modal-container>...</div>
}

在Blazor中,如何将@section modals...的内容注入到布局中@RenderSection("modals")的位置?

3个回答

11
很不幸,Blazor目前不支持这种功能。Blazor团队和社区已经讨论了一年以上是否需要这个功能,但没有结果。在这里阅读有关Blazor中Sections的信息。 但是,如果您正在寻找“临时解决方案”,您可以阅读SteveAndeson的评论,了解如何将参数值从Blazor组件页面传递到其布局中。我知道您正在寻找渲染@Body加@EndBody的方法,但原则仍然相同:您必须创建一个默认布局的布局组件。
希望这可以帮助您...

7

将在 .NET 8 中添加部分支持(source):

@using Microsoft.AspNetCore.Components.Sections
...
<div class="top-row px-4">
    <SectionOutlet SectionName="TopRowSection" />    
</div>

<SectionContent SectionName="TopRowSection">
    <button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
</SectionContent>

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接