导航SiteMathPath

时间:2011-03-25 20:13:22

标签: asp.net vb.net sitemap sitemappath web.sitemap

我的应用程序有许多不同的用户,目前为他们设置了不同的主页。该想法是针对系统中的某种类型的面包屑,即家庭>详情> ...

最佳方法是什么?我想我需要在Web.sitemap中定义每个用户可以拥有的单独路径(他们可以查看的所有页面)(将有多个SiteMapPaths),然后将站点地图控件添加到母版页并将它们链接到相应的SiteMapPath,这听起来像是接近这个的正确方法吗?

我在母版页中设置SiteMapPath时遇到问题。我使用以下教程http://geekswithblogs.net/azamsharp/archive/2006/08/16/88197.aspx尝试使用该控件,但是当我登录时,SiteMapPath控件没有显示在母版页上你知道问题可能是什么吗?

Web.sitemap:

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

      <siteMapNode url="home.aspx" title=""  description="">
        <siteMapNode url="contacts.aspx" title=""  description="">   
    </siteMapNode>

</siteMap>

在主页上:

<asp:SiteMapPath ID="SiteMapPath1" runat="server">

          <RootNodeTemplate>

          <asp:HyperLink ID="HyperLink1" runat="server"
          Text='<%# Eval("title") %>' NavigateUrl='<%# Eval("url") %>' />

          </RootNodeTemplate>

          <NodeTemplate>
            <asp:HyperLink ID="HyperLink2" runat="server"
            Text='<%# Eval("title") %>' NavigateUrl='<%# Eval("url") %>' />
          </NodeTemplate>

          </asp:SiteMapPath>

谢谢

1 个答案:

答案 0 :(得分:0)

如果您使用FormsAuthentication控制用户对其可以导航的页面的授权,那么我建议也包括角色。然后在sitemapprovider中使用securityTrimmingEnabled =“ture”。这样,您就不需要为每个用户提供单独的站点地图。

以下是how it works的基础知识:

您可能希望与我们分享一些代码,以便了解您尝试的原因无效。

<强>编辑:1

您不需要内置角色提供程序来实现此功能,但您需要向UserPrincipal添加角色。 怎么做shown here 但是,如果管理员对数据库中的用户为真,则需要编写将角色作为字符串返回每个真值的代码,即“admin”。然后将这些角色添加到用户Principal,如链接中所示,它应该与第一个链接结合使用。

修改:2 您不需要SiteMap的复杂代码就可以工作。您只需将其放在页面上,它就可以根据您的.sitemap文件运行。你也有sitemapnode的title =“”,将其设置为某个值。