2015-09-09 6 views
0

Я хочу использовать две разные web.sitemap в одном приложении. (на моей главной странице создается загрузочный navbar, я хочу разные страницы по умолчанию для разметки и т. д.). Таким образом, msdn говорит, что вы должны добавить новую web.sitemap и ключ в web.config msdn documentation, после чего я не уверен, как запросить к новому Web.sitemap, потому что я прочитал оригинал следующим образом:Использование двух web.sitemap в проекте

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

и ее ок ... в Navbar ITS, созданный все хорошо здесь ...

Но что я хочу что-то вроде:

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> 

Следующая вещь, которую я делаю, это просто добавить жерех: SiteMapDataSource на страницу с правильным именем, которое вы указали в конфигурационном файле.

тогда, если у вас есть жерех: меню, жерех: ретранслятор или любой другой элемент управления, вы можете использовать DataSourceID, чтобы соединить его с осины: SiteMapDataSource

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

Хорошо, но с sitemapdatasource, как программно получить корневой узел? –

+0

Я обновил свой ответ. создал новый источник данных и показал вам, как получить от него rootnode. вы адаптируете код для использования rootnode существующего файла sitemapdatasource на странице. –

0

Ну я нашел решение. Использование класса SiteMap как в примере, используемом в этом вопросе, вы можете получить доступ к программному к различным Web.sitemap и читать

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

Благодаря @Davy Quyo, подтверждающему мне первый шаг: добавление поставщика в web.config

Смежные вопросы