我正在开发一个面向公众的发布网站。我需要在MasterPage中提供静态导航。我不希望它与我的网站结构有关。这不会经常编辑。我想使用标准的ASP.Net导航控件<asp:Menu/>
和<asp:SiteMapDataSource/
&gt; ,假设您在根目录中有* .sitemap文件。在传统的ASP.NET中,我最终得到以下.aspx来渲染我的导航“
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server"/>
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" />
我了解您可以将* .sitemap文件指向其他位置。我想将其指向列表中的另一个文件,以便用户可以根据需要编辑* .sitemap文件。
为了将此代码转换为sharepoint,我在站点的根目录和/ Pages通过SPDesigner配置了一个* .sitemap文件(稍后将转移到一个功能中),但我最终得到了一个ASP菜单,其中包含指向父级的网站集名称(PU)和作为子级的web.sitemap的链接。见图:
alt text http://employees.claritycon.com/pwalke/blogs/nav.png
我也尝试过使用<SharePoint:AspMenu/>
,但我也有同样的行为。
我也愿意使用普通的旧xml文件进行导航。
提前致谢, 彼得
答案 0 :(得分:4)
您猜测内置ASP.NET XmlSiteMapProvider
不能与存储在SharePoint内容数据库中的.sitemap文件一起使用是正确的。我建议继承XmlSiteMapProvider
并覆盖BuildSiteMap
处理给定siteMapFile
路径的方式,以便从SharePoint获取地图数据。为了帮助您入门,可以在此处找到内置提供商的来源:ProviderToolkitSamples.msi。