3

在 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", "")

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

4

3 回答 3

6

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

<add key="umbracoUseDirectoryUrls" value="true" />
于 2013-01-04T17:22:33.293 回答
3

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

<addTrailingSlash>true</addTrailingSlash>
于 2013-01-08T20:19:49.913 回答
0

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

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

但它只会给出没有“/”的节点名称

于 2015-11-13T16:07:51.730 回答