我想標記當前節點,它是父類的一個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