我的应用程序有许多不同的用户,目前为他们设置了不同的主页。该想法是针对系统中的某种类型的面包屑,即家庭>详情> ...
最佳方法是什么?我想我需要在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>
谢谢
答案 0 :(得分:0)
如果您使用FormsAuthentication控制用户对其可以导航的页面的授权,那么我建议也包括角色。然后在sitemapprovider中使用securityTrimmingEnabled =“ture”。这样,您就不需要为每个用户提供单独的站点地图。
以下是how it works的基础知识:
您可能希望与我们分享一些代码,以便了解您尝试的原因无效。
<强>编辑:1 强>
您不需要内置角色提供程序来实现此功能,但您需要向UserPrincipal添加角色。 怎么做shown here 但是,如果管理员对数据库中的用户为真,则需要编写将角色作为字符串返回每个真值的代码,即“admin”。然后将这些角色添加到用户Principal,如链接中所示,它应该与第一个链接结合使用。
修改:2 强> 您不需要SiteMap的复杂代码就可以工作。您只需将其放在页面上,它就可以根据您的.sitemap文件运行。你也有sitemapnode的title =“”,将其设置为某个值。