我有一個菜單,使用了我的母版頁中的網站地圖。我想根據用戶禁用某些菜單項。在任何情況下,我都不想去掉MS角色的兔子洞。在主頁面上隱藏菜單項
我有以下的Site.Master:
<div class="clear hideSkiplink">
<asp:Menu ID="MainMenu" runat="server" DataSourceID="SiteMapDataSource1"
Orientation="Horizontal"
CssClass="menu"
StaticDisplayLevels="1"
StaticMenuItemStyle-VerticalPadding="2"
StaticMenuItemStyle-HorizontalPadding="10"
StaticMenuItemStyle-Font-Name="Verdana"
StaticMenuItemStyle-Font-Size="12pt"
StaticHoverStyle-BackColor="#707070"
StaticHoverStyle-ForeColor="#550000"
DynamicMenuStyle-HorizontalPadding="2"
DynamicMenuStyle-VerticalPadding="2"
DynamicMenuStyle-BackColor="#E0E0E0"
DynamicMenuStyle-ForeColor="#FFFFFF"
DynamicMenuStyle-BorderWidth="1"
DynamicMenuStyle-BorderColor="#C0C0C0"
DynamicMenuItemStyle-VerticalPadding="2"
DynamicMenuItemStyle-Font-Name="Verdana"
DynamicMenuItemStyle-Font-Size="9pt"
DynamicMenuItemStyle-ForeColor="#FFFFFF"
DynamicHoverStyle-BackColor="#707070"
DynamicHoverStyle-ForeColor="#550000" />
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="False" />
我的web.sitemap類似於以下:
<siteMapNode >
<siteMapNode url="default.aspx" title="Home" description="" />
<siteMapNode url="default.aspx?p=0" title="Admin" description="">
<siteMapNode url="default.aspx?p=55" title="thing1" description="" />
<siteMapNode url="default.aspx?p=56" title="thing2" description="" />
</siteMapNode>
<siteMapNode url="default.aspx?p=1" title="Thing3" description="">
</siteMapNode>
<siteMapNode url="default.aspx?p=2" title="Thing4" description="">
</siteMapNode>
</siteMapNode>
在Site.Master.cs我嘗試添加下兩個以下代碼的Page_Load下MainMenu_MenuItemDataBound:
Response.Write(MainMenu.Items.Count.ToString());
當我把它MainMenu_MenuItemDataBound下,它沒有效果。 當我把它放在Page_Load()下時,它打印爲零,即使我可以看到正確顯示的菜單,並且它還有項目!
Facts: 菜單存在。 菜單中有項目。 菜單和項目正確顯示。
我想進去,例如,使標題「管理員」的項目不可見(以及它的子菜單項) - 我想刪除它,但要麼使其不可見或禁用它會沒事的。我嘗試過涉及MainMenu.FindItem的各種咒語......哪種方法似乎與查找物品沒有任何關係。這是當我發現它沒有找到任何物品的原因是因爲物品數量爲零(即使我可以看到物品)。
解決方案按以下戴夫·d,但還需要
OnMenuItemDataBound="MainMenu_MenuItemDataBound"
添加到MainMenu的標籤。
沒有工作。就我所知,MainMenu_MenuItemDataBound從不被調用。 – elbillaf 2012-04-18 16:59:20
啊!祕密是我需要添加 OnMenuItemDataBound =「MainMenu_MenuItemDataBound」 到MainMenu的標籤。所以你的解決方案確實可行 – elbillaf 2012-04-18 17:05:45