我想從SiteMap文件中構建一個垂直的靜態ASP菜單,其中一個節點的子項僅在它們或它們的父節點當前選中。例如,說我的網站地圖是:在一個靜態的ASP中顯示當前節點的子項:菜單
項目1
項目2
- Child2.1
- Child2.2
項目3
- Child3.1
- Child3.2
在家裏頁(Item1),我希望我的靜態菜單顯示爲:
項目1
項目2
項目3
的項目2或Child2.1頁面上進行了我,我想我的靜態菜單顯示爲:
項目1
項目2
- Child2.1
- Child2.2
項目3
我試圖在Menu_DataBound期間在母版頁中以編程方式執行此操作,但到目前爲止失敗了。由於我的網站的主導航已經使用動態菜單,我不希望在這個二層導航上使用它們。
代替使用的ASP:菜單,我已經試過了建設中的代碼標籤:
Protected Sub LeftNavMenu_DataBound(sender As Object, e As System.EventArgs) Handles
LeftNavMenu.DataBound
If LeftNavMenu.Items.Count > 0 Then
Dim item As MenuItem
For Each item In LeftNavMenu.Items
DisplayChildMenuText(item)
Next
Else
lblNav.Text = "The Menu control does not have any items."
End If
End Sub
Sub DisplayChildMenuText(ByVal item As MenuItem)
If item.Selected Then
lblNav.Text &= "<li><span class=""active""></span><a href=""" & item.NavigateUrl & """>" & item.Text & "</a></li>"
If item.ChildItems.Count > 0 Then
Dim childItem As MenuItem
lblNav.Text &= "<ul>"
For Each childItem In item.ChildItems
lblNav.Text &= "<li><a href=""" & childItem.NavigateUrl & """>" & childItem.Text & "</a></li>"
Next
lblNav.Text &= "</ul>"
End If
Else
lblNav.Text &= "<li><a href=""" & item.NavigateUrl & """>" & item.Text & "</a></li>"
End If
End Sub
這顯示正確的導航,如果我在頂級鏈接(項目2, Item3),但如果我選擇一個子頁面則會失敗。
如果已在其他地方回答了此問題,我表示誠摯的歉意。這似乎是一個相當基本的要求,應該內置到ASP菜單中,但是我已經嘗試了幾個星期來找到解決方案。當然,我可能只是在搜索錯誤的關鍵字。