2009-11-11 3 views
3

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

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

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

У вас есть ссылки на ресурсы и примеры, которые вы прочитали? –

ответ

3

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

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

+0

Все это выглядит очень красиво, но не могли бы вы привести мне пример того, как добавить подзоны в «тест»? –

+0

FWIW, мне пришлось переопределить 'GetRootDoneCore', чтобы он работал. –

+0

Ответ обновлен, вы должны использовать 'base.AddNode'. Отказ от 'GetRootDoneCore', я сделал это раньше, так что не могу запомнить все, извините .. –

Смежные вопросы