Umbraco 4.11 MVC模式 - 儿童网址?

时间:2013-01-04 16:50:19

标签: asp.net-mvc umbraco

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

我无法将其添加为注释,但在umbracoSettings.config中有一种删除尾部斜杠的方法:

<addTrailingSlash>true</addTrailingSlash>

答案 2 :(得分:0)

获取唯一节点名称(没有.aspx)的其他方法是

 import tempfile

 highscore_file = tempfile.mktemp()

 with open(highscore_file, "w") as outf:
     outf.write("peter 1000\nsarah 500\n")

 player = "sarah"
 score = 2000

 output_lines = []
 with open(highscore_file) as inf:
     for line in inf:
         if player in line:
             # replace old with new line. Don't forget trailing newline!
             line = "%s %i\n" % (player, score)
         output_lines.append(line)

 with open(highscore_file, "w") as outf:
     outf.write("".join(output_lines))



 with open(highscore_file) as inf:
     print inf.read()

但它只会给出节点名称,而不是&#34; /&#34;