1

我有一个 ASP 菜单,其中有一些菜单项。见下面的代码:

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu"
    EnableViewState="false" IncludeStyleBlock="false"
    Orientation="Horizontal">
                        <Items>
          <asp:MenuItem NavigateUrl="~/Home.aspx" Text="Home"/>
          <asp:MenuItem NavigateUrl="~/AboutUs.aspx" Text="About"/>
          <asp:MenuItem NavigateUrl="~/Admin.aspx" Text="Admin"/>
          <asp:MenuItem NavigateUrl="~/UserAccount.aspx" Text="User"/> 
                        </Items>
                    </asp:Menu>

我想根据登录会话隐藏或禁用第三个菜单项。我知道如何处理会话,但我不知道如何隐藏一项asp:menu。我无法将 CSS 应用于单个菜单项。所以租告诉我该怎么做。

4

3 回答 3

0

“如何使用 javascript 隐藏或禁用 asp 菜单项”

如果您确实需要使用 JavaScript,请使用以下代码:

//  Hide one of the top-level ASP.Net menu items

var menuItemToHide = "Rating";

var menuItems = $(".AspNet-Menu-Horizontal > ul > li > a");
$.each(menuItems, function () {
    var menuText = $(this).text().trim();
    if (menuText == menuItemToHide) {
        $(this).parent().hide();
    }  
});

(我们有一个 ASP.Net 应用程序,其中用户的角色不是来自 Active Directory,所以我不能只在 Web.sitemap 或 web.config 中粘贴一些东西。这段代码使用 JQuery 来遍历顶级菜单项在我的 ASP.Net asp:Menu 控件中,并删除“评级”菜单。)

于 2014-06-30T15:08:42.460 回答
0

如果它是您想要隐藏的管理区域,您可以在页面加载后使用 jquery:

    $('asp:MenutItem[Text="Admin"]').hide();             

    //note you will need to replace selector with generated html
    //something like
    $('#NavigationMenu a[title="Admin"]').hide(); 

如果可以的话,最好限制服务器端的列表,这样有限的菜单就固定在那里,如下所示:

        if (!Roles.IsUserInRole("Admin"))
        {
            MenuItemCollection menuItems = NavigationMenu.Items;
            MenuItem adminItem = new MenuItem();
            foreach (MenuItem menuItem in menuItems)
            {
                if (menuItem.Text == "Admin")
                    adminItem = menuItem;
            }
            menuItems.Remove(adminItem);
        }
于 2012-10-03T08:25:06.557 回答
0

为什么要使用 javascript?它在 asp.net 框架呈现的 html 上运行,您将无法访问会话。

这个问题可能是您正在寻找的: 我可以隐藏/显示 asp:基于角色的菜单项吗?

于 2012-10-03T08:32:17.760 回答