2

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 &amp; 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」ページは出力されません。私は間違ったことをしたいですか?

4

0 に答える 0