我最近从4.09升级到Umbraco 4.10。我有一个非常常见/简单的小宏,我用它来生成我的顶级导航。我检查记录,看它是否是计数中的最后一个,如果没有添加管道符号作为可视分隔符。 这与预期的所有版本通过4.09一样,但升级后所有项目都获得管道符号甚至最后一个。
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
var level = String.IsNullOrEmpty(Parameter.Level) ? 1 : int.Parse(Parameter.Level);
var ulClass = String.IsNullOrEmpty(Parameter.UlClass) ? "" : String.Format(" class=\"{0}\"", Parameter.UlClass);
var parent = @Model.AncestorOrSelf(level);
var pages = parent.Children.Where("Visible");
if (parent != null) {
<ul class="topNav">
@foreach (var item in pages) {
var selected = Array.IndexOf(Model.Path.Split(','), item.Id.ToString()) >= 0 ? " class=\"selected\"" : "";
if (item != (pages.Last()))
{
<li@Html.Raw(selected)>
<a href="@item.Url">@item.Name |</a>
</li>
}
else
{
<li@Html.Raw(selected)>
<a href="@item.Url">@item.Name</a>
</li>
}
}
</ul>
}
}
我不确定是什么改变了,但似乎(在我的代码中)pages.Last()永远不会是真的。
有人有主意吗? - 谢谢
答案 0 :(得分:1)
您应该能够使用IsNotLast()
帮助程序获得所需的结果,如下所示:
<li@Html.Raw(selected)>
<a href="@item.url">@item.Name@(item.IsNotLast() ? " |" : "")</a>
</li>
有关可用的IsHelper的更多信息,请参阅Umbraco Razor Feature Walkthrough–Part 7。当您需要有关正在遍历的节点的信息时,它们非常方便。
答案 1 :(得分:0)
我最后还是有点不同,但我仍然不知道为什么会改变它。
而不是
if(item!=(pages.Last()))
我去了
if(item.Index()!=(pages.Count() - 1))
现在解决了,但如果有其他人在这个问题上遇到障碍,我欢迎任何反馈