使用javascript隐藏或禁用asp菜单项

时间:2012-10-03 08:21:37

标签: asp.net-mvc javascript-events vb.net-2010

大家好我有一个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>

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

3 个答案:

答案 0 :(得分: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);
        }

答案 1 :(得分:0)

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

这个问题可能就是你要找的东西: Can I hide/show asp:Menu items based on role?

答案 2 :(得分:0)

  

&#34;如何使用javascript&#34;

隐藏或禁用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控件中的顶级菜单项,并删除&#34; Rating&#34;菜单。)