在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", "")
那并不完全可怕,但我想知道我是否遗漏了什么?
答案 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;