2011-02-01 78 views
1

我有一個小問題,我只是用一些asp:hyperlink結構列表中的菜單。 我只是想知道是否有可能過濾一些與web.sitemap中定義的「角色」有關的這些asp:超鏈接?角色gestion與asp:超鏈接菜單

例如:

 <ul id="topnav"> 
     <li>Dep 
      <span> 
       <asp:HyperLink Text="testing one" NavigateUrl="/DEP/ENC/Dep_Enc.aspx" runat="server">Encode </asp:HyperLink> 
       <asp:HyperLink Text="testing two" NavigateUrl="/DEP/ENC/Dep_Enc_D.aspx" runat="server">Nouveau contrat</asp:HyperLink> 

... 


    <siteMapNode > 
    <siteMapNode url="/DEP/Dep_Ac.aspx" title="Dép" > 
     <siteMapNode url="/DEP/ENC/Dep_Enc.aspx" roles="ALL" > 
     <siteMapNode url="/DEP/ENC/Dep_Enc_D.aspx" roles="ADMIN"/> 
... 

所以是有可能使消失測試二,如果用戶不是「管理員」? 感謝您的幫助..

回答

1

您可以隨時添加一個runat="server"屬性,以及id任何經典的html標籤。在你的情況,你可以向<li><span>添加此需要:

<ul id="topnav"> 
    <li runat="server" id="adminLinks">Dep 
    <span> 
     <asp:HyperLink Text="testing one" NavigateUrl="/DEP/ENC/Dep_Enc.aspx" runat="server">Encode </asp:HyperLink> 
     <asp:HyperLink Text="testing two" NavigateUrl="/DEP/ENC/Dep_Enc_D.aspx" runat="server">Nouveau contrat</asp:HyperLink> 

... 

然後,在後面的代碼,使用Visible屬性來隱藏它(它甚至不會被渲染爲HTML):

if (!User.IsInRole("Admin")) 
{ 
    adminLinks.Visible = false; 
}