2

我正在使用MvcSiteMapProvider库在 ASP.NET MVC 4.0 应用程序中创建站点地图和导航。我创建了一个动态站点地图提供程序,但是当我将起始深度级别设置为 > 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”动态节点。但是我在根“关于”页面上将起始节点设置为“2”,我得到以下信息:

  • 可访问性
  • 条款和条件
  • 隐私

因此,带有静态子导航的“关于”页面似乎可以正确输出,但带有动态子导航的“帮助”页面却没有。想我做错了吗?

4

0 回答 0