You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server如何在特定页面而非全站隐藏侧边栏与顶部栏

Blazor Server .NET 5 特定页面隐藏侧边栏/顶部栏解决方案

步骤1:创建导航隐藏控制特性

新建HideNavigationAttribute.cs类文件,代码如下:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class HideNavigationAttribute : Attribute
{
}

步骤2:修改MainLayout.razor全局布局文件

修改默认的MainLayout.razor文件,根据当前页面是否标记了上述特性,动态控制导航元素的渲染和内容区域样式:

@inherits LayoutComponentBase
@using System.Reflection

<!-- 仅在不需要隐藏时渲染侧边栏 -->
@if (!_hideNavigationElements)
{
    <div class="sidebar">
        <NavMenu />
    </div>
}

<div class="main">
    <!-- 仅在不需要隐藏时渲染顶部栏 -->
    @if (!_hideNavigationElements)
    {
        <div class="top-row px-4">
            <a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
        </div>
    }

    <!-- 内容区域动态切换样式 -->
    <div class="@(_hideNavigationElements ? "full-screen-content" : "content px-4")">
        @Body
    </div>
</div>

@code {
    [CascadingParameter]
    public RouteData RouteData { get; set; }

    private bool _hideNavigationElements = false;

    protected override void OnParametersSet()
    {
        // 判断当前页面是否标记了HideNavigation特性
        _hideNavigationElements = RouteData.PageType
            .GetCustomAttribute<HideNavigationAttribute>() != null;
        base.OnParametersSet();
    }
}

步骤3:添加全屏内容样式

在wwwroot/css/site.css中添加全屏内容的配套样式,覆盖默认布局的边距限制:

.full-screen-content {
    width: 100vw;
    height: 100vh;
    margin: 0 !important;
    padding: 0 !important;
    overflow: auto;
}
/* 适配桌面端侧边栏隐藏后的偏移问题 */
@media (min-width: 768px) {
    .full-screen-content {
        margin-left: 0 !important;
    }
}

步骤4:在目标页面启用隐藏逻辑

在需要隐藏侧边栏和顶部栏的页面顶部,添加对应的特性标记即可:

@page "/fullscreen-page"
@attribute [HideNavigation]

<!-- 你的页面内容 -->
<h1>全屏内容页面</h1>

注意:如果你的页面使用了Bootstrap固定宽度的container类,替换为container-fluid即可实现内容横向占满全屏。

内容的提问来源于stack exchange,提问作者Ronakßе

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:30:00