使用Javascript隐藏或禁用asp菜单项
我有一个ASP菜单,其中有一些菜单项。见以下代码:使用Javascript隐藏或禁用asp菜单项,javascript,asp.net-mvc,vb.net-2010,Javascript,Asp.net Mvc,Vb.net 2010,我有一个ASP菜单,其中有一些菜单项。见以下代码: <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
<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:菜单项。我无法将CSS应用于单个菜单项。
因此,请告诉我该怎么做。如果是要隐藏的管理区域,则可以在页面加载后使用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);
}
为什么要使用javascript?它在asp.net框架呈现的html上运行,您将无法访问该会话 这个问题可能就是你想要的: 如何使用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.NETASP:menu控件中迭代顶级菜单项,并删除评级菜单