/ /プロジェクトで2つのweb.sitemapを使用する - c#、asp.net、webforms、web-config、web.sitemap

プロジェクトで2つのweb.sitemapを使用する - c#、asp.net、webforms、web-config、web.sitemap

私は2つの異なるウェブを使いたいです。1つのアプリケーションでサイトマップ。 (ブートストラップnavbarは私のマスターページで作成されています、私は別のレイアウトのデフォルトのページなどが必要です)ので、msdnはweb.configに新しいweb.sitemapとキーを追加する必要があると言います msdnのドキュメント だから私は次のように元のものを読むので、新しいWeb.sitemapにどのようにクエリするのかわからない。

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

そしてそのok ... navbarはここですべての上質を作りました...

しかし、私が欲しいものは次のようなものです:

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

明らかにその機能は存在しません...

すべて私はあまりにも多くのコードを変更せずに、新しいweb.sitemapを読んでほしい。

誰かが私を正しい方向に向けることができますか?

前もって感謝します。

回答:

回答№1は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:menu、asp:repeater、または他のコントロールがあれば、datasourceidを使ってasp:sitemapdatasourceと接続することができます

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

回答№2の場合は0

まあ私は解決策を見つけた。質問に使用されている例のようなSiteMapクラスを使用すると、プログラムによって異なるWeb.sitemapにアクセスして読み込むことができます

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

@Davy Quyoのおかげで、最初のステップを確認できました:プロバイダをweb.configに追加する