我有一点问题,我刚刚制作了一个菜单,其中包含一些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”,那么可以使测试消失吗? 谢谢你的帮助......
答案 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;
}