20

jQuery Superfishメニュー でASP.NET web.sitemapを使用することは可能ですか?

そうでない場合、web.sitemap ファイルで動作する標準ベースのブラウザーに依存しないプラグインはありますか?

4

6 に答える 6

29

同じ答えを探しているときにこの質問を見つけました...誰もが可能だと言っていますが、誰も実際の解決策を教えてくれません! 現在は機能しているようですので、調査結果を投稿したいと思いました...

必要なもの:

  • jQueryのバージョンも含むSuperfish

  • CSS Friendly Control Adaptersは DLL と .browsers ファイルをダウンロードします (それぞれ /bin と /App_Browsers フォルダーに)

  • ASP.NET SiteMap (web.config の .sitemap XML ファイルと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-menuAspNet-Menuに置き換えることで動作させることができました... そして出来上がり! メニューが現れました。asp:Menuクラスを設定できるコントロールに構成設定があると思いましたが、<ul>Google経由でヒントが見つかりませんでした。

于 2009-03-15T11:24:55.053 に答える
3

はい、完全に可能です。

ASP:Menu コントロールと jQuery 1.2.6 を Superfish プラグインと共に使用しました。ASP.NET 2.0 CSS Friendly Control Adaptersが必要になることに注意してください。

ASP.NET は、ASP:Menu コントロールをテーブル レイアウトとして生成します。CSS Friendly Control Adapter は、ASP.NET に ASP:Menu コントロールを div 内の UL/LI レイアウトとして生成させます。

Superfish プラグインは UL/LI レイアウトに依存しているため、これにより jQuery と Superfish プラグインを簡単に統合できます。

于 2008-10-04T22:26:33.367 に答える
2

Superfish の UL を生成する必要があるようです。これは、サイト マップから ASP.Net で実行できるはずです。サイト マップ コントロールは、このようなことを行うと思います。そうでない場合は、サイト マップを C# から直接呼び出して、プログラムで DOM を生成するのは簡単です。これを行うユーザー コントロールを作成するか、マスター ページで行うことができます。

サイト マップ内のノードをプログラムで列挙する方法については、この MSDN の記事を参照してください。

于 2008-10-04T22:08:19.597 に答える
1

NonLink要素のcssクラスを追加することを忘れないでください。Superfishcss要素はそれらに対応していません。そして、あなたが私のようで、リンクではないルートメニューがある場合、それはひどくレンダリングされます。AspNet-Menu-NonLink要素をsuperfish.cssファイルに追加するだけで、正常にレンダリングされます。

于 2009-09-16T10:06:00.313 に答える
0

http://simplesitemenu.codeplex.com/で使用できるきちんとした小さなサンプル プロジェクトを作成しました。

これは、サイトマップからネストされた UL/LI リストを生成する複合コントロールです。

楽しみ!

于 2011-04-19T17:22:19.697 に答える
0

SiteMapDataSource コントロールは、任意の階層データ バインド コントロールにバインドできる必要があります。私はスーパーフィッシュに詳しくありませんが、これを行うための jQueryish コントロールがたくさんあることは知っています。

于 2008-09-19T17:13:54.917 に答える