Заполнение меню из базы данных - PullRequest
2 голосов
/ 01 августа 2009

Мне нужно заполнить элемент управления ASP.NET иерархической структурой пунктами меню, которые можно постоянно изменять, из базы данных (категории с n уровнями подкатегорий).

Есть несколько подходов к этому, и я хотел бы услышать, какой из них наиболее эффективен.

Я имею в виду:

  1. Извлечение данных из базы данных и преобразование их в xml, затем преобразование их с помощью настроенного файла XSLT и привязка его к элементу управления Menu
  2. Извлечение данных из базы данных и при циклическом (рекурсивном) вставлении пунктов меню и дочерних элементов в элемент управления меню
  3. Поставщик карты сайта SQL (благодаря Made4Print)
  4. Что-то еще?

Ответы [ 3 ]

3 голосов
/ 01 августа 2009

Элемент управления ASP.NET может использовать файл .SiteMap через SiteMapDataSource.

Вы можете реализовать свой собственный SiteMapProvider, таким образом, вы можете иметь свою иерархию SiteMap в своей базе данных и подключать те же компоненты, делая вещи более динамичными.

Вот пример: http://weblogs.asp.net/scottgu/archive/2006/01/11/435108.aspx

НТН

1 голос
/ 01 августа 2009

Я согласен с Марком. Затем вы можете упаковать все внутри серверного элемента управления для повторного использования. Преобразование всего в XML, а затем использование XSLT для его «преобразования» обратно кажется мне непосильным.

1 голос
/ 01 августа 2009

Если вы хотите сделать это, я бы определенно рекомендовал вариант 2, поскольку он содержит один уровень преобразования меньше, чем вариант 1. Если вы уже просматриваете элементы меню и их иерархии, вы также можете создать элементы меню. и подпункты напрямую - я не вижу большой выгоды от обхода XML и затем через XSLT в структуру меню.

Марк

PS: вариант 3 (поставщик файла Sitemap для SQL) также звучит как очень хорошая идея, если структура и параметры карты сайта достаточно хороши для вас (как правило, так и должно быть). Я бы, наверное, сначала попробовал этот вариант и пошел оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...