Я нашел этот вопрос, ища один и тот же ответ ... все говорят , что возможно, но никто не дает фактического решения! Кажется, у меня все работает сейчас, поэтому я решил опубликовать свои выводы ...
Вещи, которые мне нужны:
Мой законченный 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.