Вопрос

Можно ли использовать ASP.NET web.sitemap с помощью jQuery Суперфиш меню?

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

Это было полезно?

Решение

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

Вещи, в которых я нуждался:

Мой законченный 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 из вашей карты сайта.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top