• Microsoft .NET
  • ASP.NET
  • ASP.NET AJAX: Отключение пользовательского интерфейса во время выполнения частичного постбэка

Навигация по сайту в ASP.NET 2.0 - Модель провайдеров

ОГЛАВЛЕНИЕ

Модель провайдеров

Возможности навигации по сайту реализованы при помощи модели провайдеров (provider model), которая предоставляет стандартный интерфейс программ (API - класс SiteMap), но позволяет разработчикам добавить свою реализацию интерфейса во время выполнения. ASP.NET 2.0 предоставляется с единственной реализацией - XmlSiteMapProvider, с помощью которой разработчик может создать карту сайта используя XML-файл (Web.sitemap). Тем не менее, структура нашего сайта может быть сформирована информацией о существующей базе данных, либо каталогами и файлами, из которых составлен наш веб-сайт. Вместо того чтобы дублировать базу данных либо файловую систему в файле Web.sitemap, мы можем создать специализированный провайдер (custom provider), который использует базу данных или информацию о файловой системе в качестве карты сайта.

Благодаря провайдеру мы можем предоставить собственную реализацию под-системы навигации сайта, но при этом доступ к ней может быть осуществлен посредством класса SiteMap. В сущности, имея в наличии специализированный провайдер (custom provider), класс SiteMap и элементы управления навигацией будут работать точно также, как и в случае с XmlSiteMapProvider. Единственным отличием будет только то, что информация карты сайта будет заимствована от нашей созданной логической структуры, будь это база данных, веб-сервис, файловая система либо какой-нибудь другой источник данных, который требуется нашему приложению. В данной статье мы рассмотрим способ создания специализированной модели навигации по сайту и построим с нуля файловый провайдер карты сайта (File System-Based Site Map Provider). Читайте далее, чтобы узнать больше об этом!

Назначение файлового провайдера карты сайта (File System-Based Site Map Provider)

Назначением файлового провайдера карты сайта является возврат карты сайта по запросу, где карта сайта является набором иерархически взаимосвязанных узлов. В частности, каждый узел карты сайта реализован в .NET Framework в качестве экземпляра класса SiteMapNode. Специализированный файловый провайдер карты сайта в данном случае будет выполнять следующее:

  1. Получать информацию карты навигации (она может быть базой данных, основанной на системе файлов и т.д.)
  2. Проходить по информации карты навигации, создавая узлы SiteMapNode для каждого логического раздела
  3. Добавлять узлы к карте сайта, тем самым формировать иерархию узлов, но при этом помнить о том, что может быть только один корневой узел.
В дополнение вам, скорее всего, придется написать некоторый код инициализации для специализированной модели карты сайта. При первом посещении карты сайта, после того как специализированный провайдер был зарегистрирован (custom provider) в файле Web.config, вызывается метод Initialize() данной модели и при этом также передаются названия атрибутов и их значения, указанные в файле Web.config провайдера. Метод Initialize() может считать данные названия и значения атрибутов и сохранять их там, где необходимо. Например, провайдеру карты сайта, который обратился к информации о структуре из базы данных, понадобится наличие строки соединения в разметке провайдера в файле Web.config. В методе Initialize() значение данной строки соединения может быть сохранено в поле (member variable ) класса. Впоследствии оно может быть использовано для произведения присоединения к базе данных при построении карты сайта.