2015-09-09 36 views
0

我想在一個應用程序中使用兩個不同的web.sitemap。 (一個引導的導航欄是在我的母版頁中創建的,我想要不同的佈局默認頁面等)所以msdn說,你必須添加一個新的web.sitemap和一個密鑰在web.config msdn documentation所以做完後,我不知道如何查詢新web.sitemap中,因爲我讀了原來如下:在一個項目中使用兩個web.sitemap

SiteMapNode rootNode = SiteMap.RootNode; 
makeNavbar(rootNode.ChildNodes, true, false); 
.... 

而其確定...創建這裏一切優秀的導航欄的...

但我想是這樣的:

SiteMapBode rootNode = SiteMap.UseProvider("newSiteMap").RootNode; 

顯然該函數不存在...

我希望它能夠在不改變太多代碼的情況下閱讀新的web.sitemap。

有人能指出我正確的方向嗎?

在此先感謝。

回答

0

這在你的配置中。

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> 
      <providers> 
      <clear /> 
      <add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" /> 
      <add name="XmlSiteMapProvider2" type="System.Web.XmlSiteMapProvider" siteMapFile="secondsitemapname.sitemap" /> 
      </providers> 
     </siteMap> 

我做的下一件事就是添加了ASP:的SiteMapDataSource的頁面與您在配置文件中給出了正確的名稱。

那麼,如果你有一個asp:菜單,ASP:中繼器,也可以使用的DataSourceID它與ASP連接任何其他控制:的SiteMapDataSource

SiteMapDataSource test = new SiteMapDataSource(); 
     test.Provider.RootNode 
+0

好吧,但有sitemapdatasource如何以編程方式獲取根節點? –

+0

我更新了我的答案。創建了一個新的數據源,並向您展示瞭如何從中獲取rootnode。您可以修改代碼以使用頁面上現有sitemapdatasource的rootnode。 –

0

嗯,我找到了解決辦法。使用Sitemap類如你問題中使用的例子,你可以以編程方式訪問到不同的web.sitemap和閱讀

SiteMapNode rootNode = SiteMap.Providers["SiteMap2"].RootNode; 

由於@Davy Quyo這證實了我的第一步:添加到供應商的web.config

相關問題