大家好我有一个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应用于单个菜单项。 所以朋友请告诉我该怎么做
答案 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;菜单。)