Меню jQuery и ASP.NET Карта сайта
Решение
Я нашел этот вопрос, когда искал тот же ответ...все говорит это возможно, но никто не дает реального решения!Кажется, сейчас у меня это работает, поэтому я решил опубликовать свои выводы...
Вещи, в которых я нуждался:
Адаптеры управления, Дружественные к CSS загрузите DLL и файл .browsers (в папки /bin и /App_Browsers соответственно).
ASP.NET Карта сайта (a XML-файл .sitemap и
siteMap
запись поставщика в web.config)
Мой законченный Masterpage.master
имеет следующее head
тег:
<head runat="server">
<script type="text/javascript" src="/script/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/script/superfish.js"></script>
<link href="~/css/superfish.css" type="text/css" rel="stylesheet" media="screen" runat="server" />
<script type="text/javascript">
$(document).ready(function() {
$('ul.AspNet-Menu').superfish();
});
</script>
</head>
Это, по сути, все, что необходимо для работы меню jQuery Superfish.Внутри страницы (где находится меню) выглядит примерно так (на основе эти инструкции):
<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server"
ShowStartingNode="false" />
<asp:Menu ID="Menu1" runat="server"
DataSourceID="SiteMapDataSource"
Orientation="Horizontal" CssClass="sf-menu">
</asp:Menu>
Судя по документации, кажется, что это ДОЛЖНО сработать, но это не так.Причина в том, что CssClass="sf-menu"
перезаписывается при отображении меню и <ul>
тег получает class="AspNet-Menu"
.Я думал , что линия $('ul.AspNet-Menu').superfish();
это помогло бы, но не помогло.
И ЕЩЕ КОЕ-ЧТО
Хотя это взлом (и, пожалуйста, кто-нибудь, укажите мне на правильное решение) Я смог заставить его работать, открыв superfish.css
файл и поиск и замена sf-меню с AspNet-Меню...и вуаля!появилось меню.Я думал, что в asp:Menu
контролировать, где я мог бы установить <ul>
класс, но не нашел никаких подсказок через Google.
Другие советы
Да, это вполне возможно.
Я использовал его с ASP:Menu control и jQuery 1.2.6 с плагином Superfish.Обратите внимание, что вам понадобится ASP.NET Адаптеры управления, Дружественные к CSS 2.0.
ASP.NET генерирует элемент управления ASP:Menu в виде макета таблицы.Дружественный к CSS адаптер управления позволит ASP.NET сгенерировать элемент управления ASP: Menu в виде макета UL / LI внутри div.
Это позволит легко интегрировать jQuery и плагин Superfish, поскольку плагин Superfish использует макет UL / LI.
Похоже, вам нужно сгенерировать UL для Superfish.Вы должны быть в состоянии сделать это с помощью ASP.Net карты вашего сайта.Я думаю, что элемент управления картой сайта будет делать что-то вроде этого.Если нет, то вызвать карту сайта непосредственно из C # и сгенерировать DOM программно должно быть довольно тривиально.Вы могли бы создать пользовательский элемент управления для этого или сделать это на главной странице.
Проверьте эта статья MSDN о том, как программно перечислить узлы на карте вашего сайта.
Не забудьте добавить css-классы для элементов, не связанных ссылками.CSS-элементы Superfish для них не подходят.И если вы похожи на меня и у вас есть корневое меню, которое не является ссылками, то оно отображается ужасно.Просто добавьте элементы AspNet-Menu-NonLink в файл superfish.css, и он должен отображаться нормально.
Элемент управления SiteMapDataSource должен иметь возможность привязки к любому элементу управления, привязанному к иерархическим данным.Я не знаком с superfish, но я знаю, что для этого существует множество элементов управления jQueryish.
Я создал аккуратный небольшой пример проекта, который вы можете использовать по адресу http://simplesitemenu.codeplex.com/
Это составной элемент управления, который генерирует вложенный список UL / LI из вашей карты сайта.
Наслаждайтесь!