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

如何在Umbraco 8中访问Web Models Link获取正确导航URL

问题分析

从Umbraco 7迁移到Umbraco 8时,导航菜单名称可正常获取,但menuItem.Url()返回的URL不符合预期;调试发现节点包含Link成员,但直接访问menuItem.Link提示成员不存在,尝试的代码出现空引用错误。

修正步骤及代码示例

  1. 确认属性别名
    先在Umbraco后台的文档类型定义中,找到菜单节点对应的链接属性的别名(注意:别名区分大小写,通常默认是小写,比如link,而非显示名称)。

  2. 正确获取Link对象
    使用Value<T>方法从menuItem中获取Umbraco.Web.Models.Link对象,替换成实际的属性别名,同时修正变量名错误:

@{
    // 替换"link"为你的链接属性实际别名
    var umbracoLink = menuItem.Value<Umbraco.Web.Models.Link>("link");
}

@if (umbracoLink != null)
{
    var linkUrl = umbracoLink.Url;
    // 处理链接目标,默认_self
    var linkTarget = string.IsNullOrWhiteSpace(umbracoLink.Target) ? "_self" : umbracoLink.Target;
}

<li class="nav-level-1__item">
    <a href="@linkUrl" class="nav-level-1__link" data-tsat="nav-menu_item" data-nav-title="@menuItem.Name" target="@linkTarget">
        @menuItem.Name
    </a>
</li>

常见错误排查

  • 变量名错误:之前代码中使用menuLink而非当前遍历的menuItem对象,导致无法正确获取属性值
  • 属性别名错误:若别名与后台定义不符,Value<T>会返回null,触发空引用
  • 未设置Link属性:部分菜单节点可能未配置Link值,需添加null判断避免报错

内容的提问来源于stack exchange,提问作者Macca Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:35