角色gestion与asp:超链接菜单

时间:2011-02-01 09:45:21

标签: asp.net

我有一点问题,我刚刚制作了一个菜单,其中包含一些asp:在列表中构建的超链接。 我只是想知道是否有可能过滤一些与web.sitemap中定义的“角色”相关的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"/>
...

如果用户不是“admin”,那么可以使测试消失吗? 谢谢你的帮助......

1 个答案:

答案 0 :(得分:1)

您始终可以向任何经典html标记添加runat="server"属性以及id。在您的情况下,您可以根据需要将其添加到<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;
}