MvcSiteMapProvider - Потомки динамических узлов не отображаются в хлебных крошках или карте сайта

Я пытаюсь разработать карту сайта для своего сайта, которая поддерживает параметры URL, когда это необходимо. Я использую MvcSiteMapProvider и пытаюсь использовать динамические узлы, чтобы сохранить данные маршрута для различных узлов. Однако у меня проблема с дочерними элементами динамических узлов. Когда я вкладываю узел в динамический узел в моем файле карты сайта, он не отображается в карте сайта, созданной с помощью Html.MvcSiteMap (). SiteMap (), и когда я перехожу на страницу, я теряю все хлебные крошки ДО динамический узел.

Например, если мой динамический узел называется «Сведения о человеке», навигационная цепочка на странице «Сведения о человеке» выглядит следующим образом:

Home > People > Person Details

Но как только я перейду дальше на страницу, скажите «Контактное лицо ", хлебная крошка выглядит так:

Person Details > Contact Person

без первых двух путей. Также, если я попытаюсь вернуться к сведениям о человеке, ни один из параметров URL-адреса не будет сохранен (например, вместо перехода по адресу http: // localhost: 55555 / Home / People / PersonDetails? Id = 12 , он будет на http: // localhost: 55555 / Home / People / PersonDetails ).

Когда я пытаюсь отобразить всю карту сайта с помощью Html.MvcSiteMap (). SiteMap (), выводится правильная иерархия вплоть до динамического узла. В карте сайта указан уникальный узел для каждого узла «Человек», найденного в поставщике динамических узлов, но не отображаются дочерние элементы динамического узла.

Моя карта сайта выглядит примерно так (сокращенно):



  
    
      
        
      
    
  

И мои Поставщик динамических узлов выглядит так:

public class PersonDetailsDynamicNodeProvider : DynamicNodeProviderBase
{
    List people = proxy.GetPeople();

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

        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();
}

Что-то мне не хватает? У меня такое ощущение, что я что-то упустил, но я новичок в веб-разработке и на самом деле сейчас просто топчу в темноте.

6
задан Ben 21 June 2011 в 20:18
поделиться