在母版页上显示/隐藏SiteMap菜单/中继器

时间:2011-06-19 08:24:12

标签: asp.net sitemap

母版页

<ul>
    <li class="first"><asp:HyperLink runat="server" ID="lnkHome" 
        NavigateUrl="~/Forms/Default.aspx">Home</asp:HyperLink></li>

    <asp:Repeater runat="server" ID="Repeater1" DataSourceID="SiteMapDataSource1" 
        EnableViewState="False">
        <ItemTemplate>
            <li>
                <asp:HyperLink ID="HyperLink1" runat="server" 
                    NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %>
                </asp:HyperLink>
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

的web.sitemap

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

  <siteMapNode id="SiteHome" url="~/Forms/Default.aspx" title="Home"  
        description="Default">
      <siteMapNode id="SiteAbout" url="~/Forms/Aboutus.aspx" title="About us"  
            description="About Us"/>
      <siteMapNode id="SiteNew" url="~/Forms/New.aspx" title="New"  
            description="My Sample Page"/>    
 </siteMapNode>

设计

首页|关于我们|我的样本页面


我是ASP.Net Webforms的新手,我正在创建我的第一个项目。 我正在使用Repeater来浏览页面网址。 在我的Master / Page.cs背后的代码我需要隐藏 [我的样本页面]基于我的登录帐户。

类似的东西:

if(UserGroup="Admin")
{
  //Show My Sample Page
  HOME | About us | My Sample Page 
}
else if(UserGroup="User1") 

{       //隐藏关于我们       HOME |关于我们    }     其他     {       //仅显示主页      家     }

如何在表单中执行加载? 谢谢你们..

2 个答案:

答案 0 :(得分:1)

执行此操作的正确方法是在Web.Config中定义网站地图提供程序,并确保设置属性securityTrimmingEnabled="true"

<siteMap defaultProvider="MySiteMap">
 <providers>
   <clear/>
   <add 
     name="MySiteMap"
     type="System.Web.XmlSiteMapProvider" 
     securityTrimmingEnabled="true" 
     siteMapFile="~/Web.SiteMap" />
 </providers>
</siteMap>

Forms文件夹中创建一个Web.Config文件并包含以下内容

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
  <location path="New.aspx">
    <system.web>
      <authorization>       
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
</configuration>

现在ASP.Net将负责显示您网站的哪些部分映射到哪些用户。 例如:在这种情况下,它会隐藏未经身份验证的用户的My Sample Page页面。

答案 1 :(得分:0)

尝试类似:

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>'
    Visible='Eval("Title") = "My Sample Page" ? this.IsAdmin.ToString() : "True"' >
    <%# Eval("Title") %>
</asp:HyperLink>