ASP.NET: пользовательская динамически заполненная карта сайта (SiteMapProvider)

Я пытаюсь написать свой первый очень SiteMapProvider подкласс. Он предназначен для динамического заполнения с использованием множества различных поисков в базе данных, как и во всех примерах, которые я нашел в Интернете.

Однако есть целый ряд вещей, которые мне не совсем понятны. Вот два моих первых вопроса:

  • Почему StaticSiteMapProvider используется практически в каждом проекте вместо SiteMapProvider? Поскольку класс содержит имя "статический", у меня создается впечатление, что он не такой... ну, динамичный, как я хочу.
  • Может ли кто-нибудь предоставить мне супер-минималистичный SiteMapProvider подкласс, который заполняет карту, используя только статические данные, т.е. нет доступа к базе данных и т. д.?

1 ответ

Решение

SiteMapProvider может быть тотально динамичным. Например, он может выполнять динамический поиск только для узлов. По сравнению с StaticSiteMapProvider Вы должны знать всю структуру. Так что это вам решать, что выбрать.

Вы можете посмотреть на XmlSiteMapProviderЭто хороший пример "статического" провайдера карт.

public class CoolMapProvider : StaticSiteMapProvider
{
    public override SiteMapNode BuildSiteMap()
    {
        var root = new SiteMapNode(this, "test", "~/test.aspx");
        base.AddNode(root, null);

        base.AddNode(new SiteMapNode(this, "test-child", "~/test_child.aspx"), root);

        return root;
    }
}

Я не проверял это, но должно работать.

Другие вопросы по тегам