MvcSiteMapProvider —动态节点的子代不会出现在面包屑或站点地图中

| 我正在尝试为我的网站开发站点地图,以便在需要时维护URL参数。我正在使用MvcSiteMapProvider,并尝试使用动态节点来保存各个节点的路由数据。但是,我遇到的问题是动态节点的子节点。当我将一个节点嵌套在站点地图文件中的动态节点中时,它不会显示在使用Html.MvcSiteMap()。SiteMap()生成的站点地图中,并且当我导航至页面时,我将失去所有面包屑在动态节点之前。 例如,如果我的动态节点称为\“ Person Details \”,则面包屑在“ Person Details”页面上看起来像这样:
Home > People > Person Details
但是,当我进一步浏览页面时,说出“ Contact Person”(联系人),面包屑看起来像这样:
Person Details > Contact Person
没有前两个路径。另外,如果我尝试导航回“个人详细信息”,则不会保留任何url参数(例如,不是转到http:// localhost:55555 / Home / People / PersonDetails?id = 12,而是转到http:// localhost :55555 /家庭/人/人详细信息)。 当我尝试使用Html.MvcSiteMap()。SiteMap()显示整个站点地图时,它将一直输出正确的层次结构,直到动态节点为止。站点地图为在动态节点提供程序中找到的每个\“ Person \”节点列出了一个唯一节点,但不显示该动态节点的任何子节点。 我的站点地图看起来像这样(缩写):
<?xml version=\"1.0\" encoding=\"utf-8\" ?>
<mvcSiteMap xmlns=\"http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0\" enableLocalization=\"true\">
  <mvcSiteMapNode title=\"Home\"  controller=\"Home\" action=\"Index\">
    <mvcSiteMapNode title=\"People\" controller=\"Information\" action=\"People\">
      <mvcSiteMapNode title=\"Person Details\" controller=\"Information\" action=\"PersonDetails\" dynamicNodeProvider=\"MySite.Code.PersonDetailsDynamicNodeProvider, MySite\">
        <mvcSiteMapNode title=\"Contact Person\" controller=\"Information\" action=\"Contact\" />
      </mvcSiteMapNode>
    </mvcSiteMapNode>
  </mvcSiteMapNode>
</mvcSiteMap>
我的动态节点提供程序如下所示:
public class PersonDetailsDynamicNodeProvider : DynamicNodeProviderBase
{
    List<Person> people = proxy.GetPeople();

    public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
    {
        var nodes = new List<DynamicNode>();

        foreach (var person in people)
        {
            DynamicNode node = new DynamicNode();
            node.RouteValues.Add(\"id\", person.ID);

            nodes.Add(node);
        }

        return nodes;
    }

    static private PersonServiceClient proxy = new PersonServiceClient();
}
我有什么想念的吗?我感觉自己已经遗漏了一些东西,但是我对Web开发是非常陌生的,在这一点上我真的只是被暗中刺伤。     
已邀请:
        您不需要动态节点提供程序。
<mvcSiteMapNode title=\"Person Details\" controller=\"Information\" action=\"PersonDetails\" preservedRouteParameters=\"id\">
  <mvcSiteMapNode title=\"Contact Person\" controller=\"Information\" action=\"Contact\" />
</mvcSiteMapNode>
可以很好地满足您的工作需求。     

要回复问题请先登录注册