Подтвердить что ты не робот

Меню jQuery и веб-сайт ASP.NET

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

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

4b9b3361

Ответ 1

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

Что мне нужно:

  • Superfish, который также включает версию jQuery

  • CSS Friendly Control Adapters скачать DLL и .browsers файл (в/bin и /App _Browsers папки соответственно)

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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