2012-12-09 32 views
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> 

我必須展示的第一個菜單鏈接到每個人,只有第二次的loggedIn用戶。但是<asp:LoginView>似乎在菜單塊內無法識別。有什麼出路嗎?

回答

3

您可以將菜單項綁定到站點地圖並使用角色屬性。您需要在您的Web.Config中啓用安全修整來執行此操作。這是最簡單的方法。

網站導航概述: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-your-menu-and-security-don-t-match-up.aspx

這樣的作品,但不太另一種選擇理想的是使用可以顯示基於角色的控件的loginview控件。這可能是最快的(但最不靈活/高性能)選項。您可以在此處找到指南:http://weblogs.asp.net/sukumarraju/archive/2010/07/28/role-based-authorization-using-loginview-control.aspx

+0

地圖爲其中u要禁用的菜單其他頁面竟然是一個偉大的事情,感謝 – Ermintar

0

我會選擇後面的方法的代碼:只添加LoginView項目到項目集合,如果用戶登錄與成員國API,您可以檢查:

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

另一個impartant這是確保該頁面不僅僅隱藏在菜單中。

0

您可以爲登錄用戶和匿名用戶使用單獨的主模板。擁有匿名用戶的主模板只能包含所有人都可以查看的鏈接。並將登錄的用戶主模板應用到您想要登錄後顯示的頁面,以便用戶將geet預期的菜單。希望這可以幫助..

0

它會工作,如果你想禁用任何頁面的菜單項。

on masterpage.cs文件。

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

爲page_load您想要禁用菜單。

this.Master.UserMenu = false; 
+0

。(asp.net頁面) –

+0

使用aspx頁面下面的線。低於指令路徑<%@ MasterType VirtualPath =「MasterPageName.master」%> –