【问题标题】:Umbraco 4.11 MVC Mode - Children Url?Umbraco 4.11 MVC 模式 - 儿童网址?
【发布时间】:2013-01-04 16:50:18
【问题描述】:

在 MVC 模式下使用 Umbraco 4.11 时获取当前节点子节点的 URL 的正确方法是什么?这是我尝试过的,但它一直返回一个空白 URL:

@if (CurrentPage.Children().Count() > 0) {
    <ul>
    @foreach (var child in CurrentPage.Children()) {
        <li><a href="@child.Url">@child.Name</a></li>
    }
    </ul>
}

当这不起作用时,我采取了以下措施:

@Umbraco.NiceUrl(child.Id)

这会返回一个 URL,但它上面有 .aspx 扩展名。所以我的下一个技巧是......

@Umbraco.NiceUrl(child.Id).Replace(".aspx", "")

这并不完全糟糕,但我想知道我是否遗漏了什么?

【问题讨论】:

    标签: asp.net-mvc umbraco


    【解决方案1】:

    您需要 NiceUrl() 方法来生成有效的 Url。 要摆脱 .aspx 扩展名,您需要在 web.config 文件中将设置“umbracoUseDirectoryUrls”设置为 true:

    <add key="umbracoUseDirectoryUrls" value="true" />
    

    【讨论】:

    • 谢谢。有没有办法在没有斜杠的情况下做到这一点?
    • 默认带有斜杠。我认为没有配置设置可以删除它。
    【解决方案2】:

    我无法将此添加为评论,但有一种方法可以在 umbracoSettings.config 中删除尾部斜杠:

    <addTrailingSlash>true</addTrailingSlash>
    

    【讨论】:

    • 错过了那个。谢谢,工作就像一个魅力。不知道为什么这些设置分散在 web.config 和 umbracoSettings.config 之间!?!
    • 现在我已经制定了约定,我只需要一个更好的想法来建立一个值得建设的网站:) 可能需要注册 Umbraco.tv 以了解如何最好地构建我的网站,但是不确定其中有多少实际适用于当前版本。
    • 大部分应该适用于当前版本,具体取决于您正在查看的视频。只是最近发生了变化的底层层(例如,引入了 MVC 支持,并且 API 进行了大修),但很少发生重大变化,并且通常会记录在案。
    【解决方案3】:

    获取仅节点名称(不带 .aspx)的其他方法是

    @Model.NodeById(@child.Id).urlName
    

    但它只会给出不带“/”的节点名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多