web.sitemap ファイルから構築されたカスタム メニュー ナビゲーションがあります。この最初の行は次のようになります。
SiteMapNodeCollection topLevelNodes = SiteMap.RootNode.ChildNodes;
これはうまくいきます - web.sitemap ファイルからすべての最上位ノードを取得し、各 SiteMapNode を調べて何かをすることができます。
ただし、複数の web.sitemap ファイルを作成し、使用する web.sitemap ファイルをプログラムで決定できるようにしたいのですが、これを行う方法がわかりません。ロードする web.sitemap ファイルを決定するロジックを実行できるカスタム SiteMapProvider を 1 つ作成するか、複数のプロバイダーを用意して、それぞれの SiteMapFile プロパティを特定の *.sitemap ファイルに設定してから切り替えることができると想定しています。 SiteMap.RootNode にアクセスする前に、プロバイダーをプログラムで変更します。
カスタム プロバイダーを 1 つ用意して、実際の物理的なサイトマップ ファイルの場所を検索する部分をオーバーライドする方がおそらく簡単だと思いますが、これをどのように行うかは不明です
私はたくさんグーグルで検索しましたが、ほとんどの回答は標準のサイトマップパスコントロールなどに関するもので、SiteMapDataSource の設定方法に関するもので、私のアプローチには関係ないと思います。