マスターページにあるサイトマップを使用しているメニューがあります。ユーザーに応じて特定のメニュー項目を無効にしたいどのような状況下でも、私はMSの「役割」のウサギの穴に行きたいとは思わない。マスターページのメニュー項目を非表示にする
<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類似有する:
Iは、以下のSite.Masterを有するIの両方の下で、次のコードを追加しようとしたSite.Master.csで
<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>
Page_Load AND MainMenu_MenuItemDataBoundの下:
Response.Write(MainMenu.Items.Count.ToString());
MainMenu_MenuItemDataBoundの下に置くと、それは効果がありません。 私はPage_Load()の下に置くとき、私は正しく表示されたメニューを見ることができ、それはアイテムを持っていますが、ゼロを出力します!
ファクト: メニューがあります。 メニューには項目があります。 メニューと項目は、表示されているとおりに正しく表示されます。
たとえば、「管理者」というタイトルのアイテムを(サブメニューアイテムとともに)非表示にしたい - それを削除したいと思いますが、非表示にするか無効にするかは問題ありません。私は、MainMenu.FindItemを含むさまざまな呪文を試してみました...どのメソッドがアイテムを見つけることと関係がないようです。これは、アイテム数がゼロである(アイテムが表示されていても)ため、アイテムが見つからないという理由に気付いたときです。
以下デイブDごとなどのソリューションが、また、メインメニュータグに
OnMenuItemDataBound="MainMenu_MenuItemDataBound"
を追加する必要がありました。
動作しませんでした。私が知る限り、MainMenu_MenuItemDataBoundは呼び出されません。 – elbillaf
AH!秘密は、私は のOnMenuItemDataBound = "MainMenu_MenuItemDataBound" をMainMenuのタグに追加する必要がありました。したがって、あなたのソリューションは機能します。 – elbillaf