2

谁能帮我在 ASP.Net 中显示菜单?

我的Site.master页面带有导航菜单

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
   <Items>
      <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
      <asp:LoginView>
         <LoggedInTemplate>
            <asp:MenuItem NavigateUrl="~/Securedpage.aspx" Text="Securedpage"/>
         </LoggedInTemplate>
      </asp:LoginView>
   </Items>
</asp:Menu>

我必须向所有人显示第一个菜单链接,第二个仅向登录用户显示。但是,<asp:LoginView>菜单块中似乎无法识别。有什么出路吗?

4

4 回答 4

3

您可以将菜单项绑定到站点地图并使用角色属性。您需要在您的 Web.Config 中启用 Security Trimming 才能执行此操作。这是最简单的方法。

站点导航概述:http: //msdn.microsoft.com/en-us/library/e468hxky.aspx

安全修整信息:http: //msdn.microsoft.com/en-us/library/ms178428.aspx

站点地图绑定信息:http ://www.w3schools.com/aspnet/aspnet_navigation.asp

好的教程/概述:http ://weblogs.asp.net/jgalloway/archive/2008/01/26/asp-net-menu-and-sitemap-security-trimming-plus-a-trick-for-when-你的菜单和安全不匹配-up.aspx

另一个可行但不太理想的选项是使用 loginview 控件,它可以根据角色显示控件。这可能是最快(但最不灵活/性能)的选项。您可以在此处找到指南:http ://weblogs.asp.net/sukumarraju/archive/2010/07/28/role-based-authorization-using-loginview-control.aspx

于 2012-12-09T08:57:22.893 回答
0

我会选择代码背后的方法:如果用户已登录,仅将 LoginView 项目添加到 Items 集合中。使用 Membership API,您可以通过以下方式检查:

System.Web.HttpContext.Current.User.Identity.IsAuthenticated

另一个传授者是保护该页面,而不仅仅是隐藏在菜单中。

于 2012-12-09T08:54:49.140 回答
0

您可以为登录用户和匿名用户使用单独的主模板。匿名用户的主模板只能有所有人可以查看的链接。并将登录的用户主模板应用于登录后要显示的页面,以便用户获得预期的菜单。希望这会有所帮助..

于 2012-12-09T09:33:24.323 回答
0

如果您想禁用任何页面的菜单项,它将起作用。

在 masterpage.cs 文件上。

public bool UserMenu
{   
    set { Menu1.Visible = value; }
}

对于要禁用菜单的 page_load。

this.Master.UserMenu = false;
于 2015-11-27T21:57:46.607 回答