【问题标题】:Disable layout for page under Blazor在 Blazor 下禁用页面布局
【发布时间】:2020-04-18 12:00:47
【问题描述】:

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

  @{
    Layout = null
  }

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

如何在 Blazor 中实现这一点?

【问题讨论】:

  • 此链接可能会有所帮助:docs.microsoft.com/en-us/aspnet/core/blazor/…
  • @MichaelWashington 感谢您的评论。我知道该链接,并且在发布之前进行了审核。我没有看到任何对我的方案有帮助的东西。
  • 也许将默认布局页面设置为“空”,然后为 index.razor 定义一个名为“IndexLayout”的布局,然后将其放在 Index.razor 页面的顶部:@layout IndexLayout跨度>
  • @MichaelWashington 这不是理想的解决方案,但它确实有效。谢谢迈克尔。

标签: blazor asp.net-core-3.1


【解决方案1】:

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

第一步:首先新建一个空的razor component,命名为EmptyLayout

EmptyLayout.razor

@inherits LayoutComponentBase

<div class="main">    
    <div class="content px-4">
        @Body
    </div>
</div>

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

@layout EmptyLayout

【讨论】:

  • 感谢@Osman - Michael 也发布了同样的内容。最后,我选择了你们建议的解决方案。
  • 不幸的是,这不是直接替换,因为 Blazor 页面仍然包裹在 _Hosts.cshtml 中的任何布局中。
  • 这个解决方案会导致原始MainLayout 在覆盖开始之前瞬间“闪烁”。
猜你喜欢
  • 2021-02-04
  • 2020-08-11
  • 2021-12-25
  • 2021-12-18
  • 2020-12-22
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多