jQuery メニューと ASP.NET サイトマップ
解決
同じ答えを探しているときにこの質問を見つけました...みんな 言う それは可能ですが、誰も実際の解決策を教えてくれません。現在は動作しているようですので、調査結果を投稿したいと思います...
必要なもの:
CSS フレンドリーなコントロール アダプター DLL と .browsers ファイルをダウンロードします (それぞれ /bin フォルダーと /App_Browsers フォルダーに)
ASP.NET サイトマップ (.sitemap XML ファイルと
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 コントロールと jQuery 1.2.6 の Superfish プラグインで使用しました。注意: 次のものが必要になります。 ASP.NET 2.0 CSS フレンドリーなコントロール アダプター.
ASP.NET は、ASP:Menu コントロールをテーブル レイアウトとして生成します。CSS フレンドリー コントロール アダプターは、ASP.NET に ASP:Menu コントロールを div 内の UL/LI レイアウトとして生成させます。
Superfish プラグインは UL/LI レイアウトに依存しているため、これにより jQuery と Superfish プラグインを簡単に統合できます。
Superfish用のULを生成する必要があるようです。ASP.Net を使用してサイト マップからこれを実行できるはずです。サイトマップコントロールはこんな感じになると思います。そうでない場合は、C# から直接サイト マップを呼び出し、プログラムで DOM を生成することは非常に簡単なはずです。これを行うユーザー コントロールを構築することも、マスター ページで行うこともできます。
チェックアウト この MSDN 記事 サイト マップ内のノードをプログラムで列挙する方法について説明します。
NonLink 要素の CSS クラスを忘れずに追加してください。Superfish CSS 要素はそれらに対応していません。そして、あなたが私と同じで、リンクではないルートメニューを持っている場合、レンダリングはひどくなります。AspNet-Menu-NonLink 要素を superfish.css ファイルに追加するだけで、正常にレンダリングされるはずです。
SiteMapDataSource コントロールは、任意の階層データ バインド コントロールにバインドできる必要があります。私は superfish には詳しくありませんが、これを行うための jQuery 風のコントロールがたくさんあることは知っています。
で使用できる素敵な小さなサンプル プロジェクトを作成しました。 http://simplesitemenu.codeplex.com/
これは、サイトマップからネストされた UL/LI リストを生成する複合コントロールです。
楽しむ!