Мне нужно заполнить элемент управления ASP.NET иерархической структурой элементами меню, которые можно постоянно изменять из базы данных (категории с n уровнями подкатегорий).
Есть несколько подходов к этому, и я хотел бы услышать, какой из них наиболее эффективен.
Я имею в виду:
Элемент управления ASP.NET может использовать файл .SiteMap через SiteMapDataSource.
Вы можете реализовать свой собственный SiteMapProvider, таким образом вы можете иметь свою иерархию SiteMap в своей базе данных и подключать те же компоненты, что делает вещи более динамичными.
Вот пример: http://weblogs.asp.net/scottgu/archive/2006/01/11/435108.aspx
НТН
Я согласен с Марком. Затем вы можете упаковать все внутри серверного элемента управления для повторного использования. Преобразование всего в XML, а затем использование XSLT, чтобы каким-то образом "преобразовать" его обратно, мне кажется накладными.
Если вы хотите сделать это, я определенно рекомендую вариант 2, так как он содержит один уровень преобразования меньше, чем вариант 1. Если вы уже обходите элементы меню и их переходы, вы можете также создать пункты меню и subitems напрямую - я не вижу большой пользы от того, чтобы обход вокруг XML, а затем через XSLT в структуру меню, действительно.
Марк
PS: Вариант 3 (поставщик Sitemap для SQL) также звучит как действительно хорошая идея, если структура и параметры карты сайта достаточно хороши для вас (они обычно должны быть). Я бы, наверное, сначала попробовал этот вариант и пошел оттуда.