我想用 css 类标记当前节点和它的父节点。我四处寻找,发现了这些链接:
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>
这现在完美无缺。但是真的没有更简单的方法吗?不能成为地球上第一个需要这个的人吗?