ASP.NET サイト ナビゲーションの概要

更新 : 2007 年 11 月

ASP.NET サイトナビゲーション機能を使用すると、ユーザーはいつも同じ方法でサイト内を移動できます。サイトが拡大し、サイトでのページ間の移動量が増すにつれて、すべてのリンクを管理するのが困難になる可能性があります。ASP.NET サイト ナビゲーションでは、ページへのすべてのリンクを中央の 1 か所に格納し、特定の Web サーバー コントロールを使用して、それらのリンクを各ページのリストやナビゲーション メニューに表示できます。

ASP.NET サイト ナビゲーションを使用すると、管理が容易で、一貫性のあるサイトのナビゲーション ソリューションを作成できます。ASP.NET サイト ナビゲーションには、次の機能があります。

  • **サイト マップ   **サイト マップを使用して、サイトの論理構造を表すことができます。これにより、ページを追加したり、削除したりするときに、すべての Web ページのハイパーリンクを変更する代わりに、サイト マップを変更してページ ナビゲーションを管理できます。

  • **ASP.NET コントロール   **ASP.NET コントロールを使用して、Web ページにナビゲーション メニューを表示できます。ナビゲーション メニューはサイト マップに基づきます。

  • **プログラムによるコントロール   **ASP.NET サイト ナビゲーションをコードで処理して、カスタム ナビゲーション コントロールを作成したり、ナビゲーション メニューに表示される情報の場所を変更したりできます。

  • **アクセス規則   **ナビゲーション メニューにリンクを表示または非表示にするアクセス規則を設定できます。

  • **カスタム サイトマップ プロバイダ   **独自のサイトマップ バック エンド (リンク情報を格納するデータベースなど) を使用できるカスタム サイトマップ プロバイダを作成し、プロバイダを ASP.NET サイトナビゲーション システムに接続できます。

サイト ナビゲーションの動作

ASP.NET サイト ナビゲーションでは、サイトのレイアウトを階層構造で表現します。たとえば、架空のオンライン コンピュータ ストアのサイトを 8 ページで構成する場合は、次のようにレイアウトできます。

Home
   Products
      Hardware
      Software
   Services
      Training
      Consulting
      Support

サイト ナビゲーションを使用するには、最初にサイト マップつまりサイトの表現を作成します。サイトの階層構造は XML ファイルで表現できますが、他のオプションも使用できます。使用例を含む詳細については、「ASP.NET サイト マップ」を参照してください。

サイト マップを作成した後は、サイトナビゲーション コントロールを使用して、ナビゲーション構造を ASP.NET ページに表示できます。使用例については、「方法 : 簡単なサイト ナビゲーションを追加する」を参照してください。

サイトマップの読み込みプロセス

既定の ASP.NET サイトマップ プロバイダは、アプリケーションの起動時にサイトマップ データを XML ドキュメントとして読み込み、静的データとしてキャッシュします。サイトマップ ファイルが極端に大きい場合は、読み込み時に大量のメモリと CPU パワーを使用する可能性があります。ASP.NET サイトナビゲーション機能は、ファイル通知に従ってナビゲーション データを最新の状態に維持します。サイト マップ ファイルが変更されると、ASP.NET はサイトマップ データを再読み込みします。ウイルス対策ソフトウェアは、必ずサイトマップ ファイルを変更しないように設定します。詳細については、「ASP.NET のサイト ナビゲーションの保護」を参照してください。

サイト ナビゲーション コントロール

サイトの構造を表現するサイト マップを作成することは、ASP.NET サイト ナビゲーション システムを構成する作業の 1 つです。もう 1 つの作業は、ユーザーがサイト内を簡単に移動できるように ASP.NET Web ページにナビゲーション構造を表示することです。以下の ASP.NET サイト ナビゲーション コントロールを使用すると、ナビゲーションを簡単にページに組み込むことができます。

  • SiteMapPath   ユーザーに現在のページの場所を示すナビゲーション パス (階層リンクまたはアイブロウとも呼ばれる) を表示し、さらにホーム ページに戻るパスをリンクとして表示します。このコントロールには、リンクの外見のカスタマイズに使用できる、さまざまなオプションが用意されています。

  • TreeView   このコントロールは、ユーザーがサイト内のさまざまなページに移動する際に確認できるツリー構造つまりメニューを表示します。子ノードを含むノードは、そのノードをクリックすることにより、展開または折りたたむことができます。

  • Menu   このコントロールは、ユーザーがサイト内の別のページに移動する際に確認できる、展開可能なメニューを表示します。メニューにカーソルを合わせると、子ノードを含むノードが展開されます。

前の例に示したオンライン コンピュータ ストアの Training ページに SiteMapPath コントロールを追加すると、SiteMapPath コントロールは次のようなマップを表示し、Home と Services がハイパーリンクとして表示されます。

[ホーム] > [サービス] > [学習]

SiteMapPath コントロールを使用すると、コードや明示的なデータ バインディングなしでサイト ナビゲーションを作成できます。このコントロールは、サイト マップ情報の読み込みと表示を自動的に行うことができます。ただし、必要に応じて、SiteMapPath コントロールは、コードを使ってカスタマイズすることもできます。カスタマイズ例については、「方法 : メモリ内のサイトマップ ノードをプログラムで変更する」を参照してください。

SiteMapPath コントロールを使用すると、現在のページからサイト階層内の上位のページに移動できるようになります。ただし、SiteMapPath コントロールでは、現在のページから階層内の下位のページに進むことはできません。SiteMapPath コントロールは、ニュースグループ アプリケーションや掲示板アプリケーションで、ユーザーが現在閲覧している記事へのパスを確認するときに便利です。

TreeView コントロールや Menu コントロールを使用すると、ノードを開いて、特定のページに直接移動できます。これらのコントロールは、SiteMapPath コントロールとは違って、サイト マップを直接読み取りません。代わりに、サイト マップを読み取ることができる SiteMapDataSource コントロールをページに追加します。そして、TreeView コントロールまたは Menu コントロールを SiteMapDataSource コントロールに関連付けると、サイト マップがページに表示されます。TreeView コントロールは、次のようなサイト マップを表示します。

- [ホーム]

   - [サービス]

      + [学習]

e468hxky.alert_note(ja-jp,VS.90).gifメモ :

SiteMapPathTreeViewMenu の各コントロールをサイトのすべてのページに表示するには、マスタ ページを作成し、そのページにコントロールを追加するのが簡単です。詳細については、「ASP.NET マスター ページの概要」を参照してください。

サイト ナビゲーション API

ナビゲーション コントロールを使用すると、コードをほとんど使わずにページにサイト ナビゲーションを追加できますが、コードによってサイト ナビゲーションを操作することもできます。Web アプリケーションを実行すると、ASP.NET は、サイトマップ構造を表す SiteMap オブジェクトを公開します。SiteMap オブジェクトのメンバはすべて静的なオブジェクトです。SiteMap オブジェクトは、マップ内の各ノードのプロパティを含む SiteMapNode オブジェクトのコレクションを公開します(SiteMapPath コントロールを使用すると、SiteMap オブジェクトや SiteMapNode オブジェクトと連携して、適切なリンクが自動的に表示されます)。

SiteMapSiteMapNodeSiteMapProvider の各オブジェクトを独自のコードで使用すると、サイトマップ構造を走査したり、カスタム コントロールを作成してサイトマップ データを表示したりできます。サイト マップに書き込むことはできませんが、オブジェクトのインスタンスでサイトマップ ノードを変更することはできます。詳細については、「方法 : メモリ内のサイトマップ ノードをプログラムで変更する」または「方法 : サイトマップ ノードをコードによって列挙する」を参照してください。

サイト ナビゲーション コンポーネント間の関係

ASP.NET サイト ナビゲーション コンポーネント間の関係を次に示します。

サイト ナビゲーション クラス間の関係

参照

処理手順

方法 : サイトマップ ノードをコードによって列挙する

概念

ASP.NET サイト マップ

ASP.NET のサイト ナビゲーションの保護

データ アクセスのセキュリティ保護

その他の技術情報

ホストされた環境での ASP.NET アプリケーションのセキュリティ