Я хотел бы отметить текущий узел и его родительский класс 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