在 Blazor 下禁用页面布局

waq*_*med 16 blazor asp.net-core-3.1

在 Razor 语法中,要禁用特定页面的布局,我们可以这样做:

  @{
    Layout = null
  }
Run Code Online (Sandbox Code Playgroud)

在 Blazor 中,它的约定由@layout. 但是,我看不到如何将其设置为空/禁用。我希望仅将其应用于index.razor页面。

如何在 Blazor 中实现这一点?

Osm*_*oni 24

在我的Blazor-server-side项目中,我通过以下两个步骤解决了这个问题。

第 1 步:首先创建一个razor component名为EmptyLayout.

EmptyLayout.razor

@inherits LayoutComponentBase

<div class="main">    
    <div class="content px-4">
        @Body
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

第 2 步,要设置Layout=null,我在所有必需页面的顶部使用以下代码

@layout EmptyLayout
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这不是直接替换,因为 Blazor 页面仍然包含在 _Hosts.cshtml 中的任何布局中。 (5认同)
  • @niico 不幸的是,这个功能仍然在他们的积压中。您可以在这里关注 https://github.com/dotnet/aspnetcore/issues/27169 (3认同)
  • 在覆盖对我生效之前,此解决方案会导致原始“MainLayout”瞬间“闪烁”。 (2认同)