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

Umbraco 12+基于自定义参数构建动态左侧导航查询咨询

Umbraco 12 动态左侧导航实现方案

你只需要先获取当前页面的leftNavigationSection值,将其作为查询条件替换掉硬编码的分区名称即可,具体修改如下:

  1. 获取当前页面的导航分区值:
    用你提到的Model.Value("leftNavigationSection")获取当前页面所属分区,同时增加空值判断避免空引用问题。

  2. 调整查询逻辑:
    把硬编码的"Human Resources"替换为动态获取的变量,同时合并多个Where条件让代码更简洁。

修改后的完整代码:

@{
    // 获取当前页面的导航分区值并做空值处理
    var currentSection = Model.Value<string>("leftNavigationSection");
    var selectLeftNav = Enumerable.Empty<ContentPage>();

    if (!string.IsNullOrEmpty(currentSection))
    {
        selectLeftNav = Model.Ancestor()
            .Children<ContentPage>()
            .Where(x => x.IsVisible() 
                        && x.ShowOnLeftNavigation == true 
                        && x.LeftNavigationSection == currentSection);
    }
}

<ul class="nav left-nav-items">
    @foreach (var item in selectLeftNav)
    {
        <li class="nav-item">
            <a href="@item.Url()">@item.Name</a>
        </li>
    }
</ul>

补充说明:

  • 空值判断逻辑:如果当前页面未设置导航分区,导航会显示为空,你可以根据需求调整这种场景的处理(比如显示默认分区或提示文本)。
  • 合并Where条件能让代码更紧凑,Linq会自动优化查询性能。
  • 全程使用强类型模型属性匹配,不需要依赖Umbraco的GUID查询构建器,完全符合你的要求。

内容的提问来源于stack exchange,提问作者Yaco Zaragoza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:47:02