Меню jQuery и ASP.NET Sitemap - PullRequest
       78

Меню jQuery и ASP.NET Sitemap

20 голосов
/ 19 сентября 2008

Можно ли использовать ASP.NET web.sitemap с меню jQuery Superfish ?

Если нет, существуют ли какие-либо стандартные независимые плагины для браузера, которые работают с файлом web.sitemap?

Ответы [ 6 ]

29 голосов
/ 15 марта 2009

Я нашел этот вопрос, ища один и тот же ответ ... все говорят , что возможно, но никто не дает фактического решения! Кажется, у меня все работает сейчас, поэтому я решил опубликовать свои выводы ...

Вещи, которые мне нужны:

Мой законченный 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-menu с AspNet-Menu ... и вуаля! меню появилось. Я думал, что в элементе управления asp:Menu будет какая-то настройка, где я мог бы установить класс <ul>, но не нашел никаких подсказок через Google.

3 голосов
/ 05 октября 2008

Да, это вполне возможно.

Я использовал его с ASP: управление меню и jQuery 1.2.6 с плагином Superfish. Обратите внимание, что вам понадобятся Адаптеры дружественного управления CSS ASP.NET 2.0 .

ASP.NET генерирует элемент управления ASP: меню в виде таблицы. Адаптер дружественного управления CSS заставит ASP.NET сгенерировать элемент управления ASP: Menu в виде макета UL / LI внутри div.

Это позволит легко интегрировать плагин jQuery и Superfish, поскольку плагин Superfish основан на макете UL / LI.

2 голосов
/ 05 октября 2008

Похоже, вам нужно сгенерировать UL для Superfish. Вы должны быть в состоянии сделать это с ASP.Net с вашей карты сайта. Я думаю, что контроль карты сайта будет делать что-то вроде этого. Если нет, то довольно просто вызывать карту сайта непосредственно из C # и программно генерировать DOM. Для этого вы можете создать пользовательский элемент управления или сделать это на главной странице.

Ознакомьтесь с этой статьей MSDN о том, как программно перечислить узлы на карте сайта.

1 голос
/ 16 сентября 2009

Не забудьте добавить классы CSS для элементов NonLink. Элементы Superfish CSS не учитываются. И если вы похожи на меня и у вас есть корневое меню, которые не являются ссылками, то это ужасно. Просто добавьте элементы AspNet-Menu-NonLink в файл superfish.css, и он будет хорошо отображаться.

0 голосов
/ 19 апреля 2011

Я создал небольшой пример проекта, который вы можете использовать по адресу http://simplesitemenu.codeplex.com/

Это составной элемент управления, который генерирует вложенный список UL / LI из вашей карты сайта.

Наслаждайтесь!

0 голосов
/ 19 сентября 2008

Элемент управления SiteMapDataSource должен иметь возможность привязки к любому элементу управления, связанному с иерархическими данными. Я не знаком с суперфишами, но знаю, что для этого есть множество элементов управления jQueryish.

...