ASP.NETMVC4.0アプリケーションでサイトマップとナビゲーションを作成するためにMvcSiteMapProviderライブラリを使用しています。動的サイトマッププロバイダーを作成しましたが、開始深度レベルを> 1に設定すると、どのノードも表示されないようです。レベル1に設定すると、動的に作成されたノードは問題なく表示されます。
これが私のサイトマップファイルです:
<mvcSiteMapNode title="Help" controller="Help" action="Index" key="Help">
<mvcSiteMapNode title="Help Section" controller="Help" action="Section"
dynamicNodeProvider="MyLibrary.HelpNodeProvider, MyLibrary" />
</mvcSiteMapNode>
<mvcSiteMapNode title="About" clickable="false">
<mvcSiteMapNode title="Accessibility" controller="Info" action="Accessibility" />
<mvcSiteMapNode title="Terms & Conditions" controller="Info" action="Terms" />
<mvcSiteMapNode title="Privacy" controller="Info" action="Privacy" />
</mvcSiteMapNode>
...そして私のHelpNodeProviderクラス:
namespace MyLibrary.Sitemap
{
public class HelpNodeProvider : DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
DynamicNode test = new DynamicNode();
test.Title = "Help Item 1";
test.Controller = "Help";
test.Action = "Section";
test.RouteValues.Add("sectionName", "item1");
test.ParentKey = "Help";
return new List<DynamicNode>()
{
test
};
}
}
}
ここで、「ヘルプ」ページのルートに、次のMvcSiteMapヘルパーコードを追加すると、次のようになります。
@Html.MvcSiteMap().Menu(2, 2)
...何も出力されませんが、開始レベルを「1」に変更すると、次のようになります。
@Html.MvcSiteMap().Menu(1, 2)
...次のように出力されます。
- 約
- アクセシビリティ
- 利用規約
- プライバシー
- ヘルプ
- ヘルプアイテム1
...ご覧のとおり、「ヘルプ項目1」動的ノードが存在します。しかし、ルートの「About」ページで開始ノードを「2」に設定すると、次のようになります。
- アクセシビリティ
- 利用規約
- プライバシー
したがって、静的サブナビゲーションのある「About」ページは正しく出力されているように見えますが、動的サブナビゲーションのある「Help」ページは出力されません。私は間違ったことをしたいですか?