我想标记当前节点,它是父类的一个css类。我在寻找了一圈,发现这些链接:MVCSitemapProvider指示当前节点和父节点
http://mvcsitemap.codeplex.com/discussions/257786 http://mvcsitemap.codeplex.com/discussions/245000
所以我修改SiteMapNodeModelList.cshtml现在,当前节点正在凸显。但不知道如何突出显示父节点。
<ul>
@foreach (var node in Model) {
<li class="@(node.IsCurrentNode ? "current" : "")" >@Html.DisplayFor(m => node)
@if (node.Children.Any()) {
@Html.DisplayFor(m => node.Children)
}
</li>
}
</ul>
为了纪念我建立的一个检查所有直接子元素的扩展方法父节点(我只有2级):
public static bool IsCurrentNodeOrChild(this SiteMapNodeModel node)
{
if (node.IsCurrentNode) return true;
return node.Children.Any(n => n.IsCurrentNode);
}
而改变MenuHelperModel.cshtml这样的:
<ul id="menu">
@foreach (var node in Model.Nodes) {
<li class="@(node.IsCurrentNodeOrChild() ? "current" : "d")" >@Html.DisplayFor(m => node)
@if (node.Children.Any()) {
@Html.DisplayFor(m => node.Children)
}
</li>
}
</ul>
这现在完美。但是真的没有简单的方法吗?不能成为地球上第一个需要这个的人吗?
谢谢!这不是针对MvcSiteMapProvider的。我越来越觉得我在某个地方失去了某种东西。 – Remy
我创建了一个git pull。 https://github.com/maartenba/MvcSiteMapProvider/pull/251 我希望我已经做到了这一点。 – Remy
对不起,为了让它恢复原状,但有没有可能通过自定义标签扩展SiteMapNodeModel(例如,用于过滤节点)?我想使用node.ResourceKey,但节点无法访问。 – Storm