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 コントロールは、次のようなサイト マップを表示します。
- [ホーム]
- [サービス]
+ [学習]
メモ : |
---|
SiteMapPath、TreeView、Menu の各コントロールをサイトのすべてのページに表示するには、マスタ ページを作成し、そのページにコントロールを追加するのが簡単です。詳細については、「ASP.NET マスター ページの概要」を参照してください。 |
サイト ナビゲーション API
ナビゲーション コントロールを使用すると、コードをほとんど使わずにページにサイト ナビゲーションを追加できますが、コードによってサイト ナビゲーションを操作することもできます。Web アプリケーションを実行すると、ASP.NET は、サイトマップ構造を表す SiteMap オブジェクトを公開します。SiteMap オブジェクトのメンバはすべて静的なオブジェクトです。SiteMap オブジェクトは、マップ内の各ノードのプロパティを含む SiteMapNode オブジェクトのコレクションを公開します(SiteMapPath コントロールを使用すると、SiteMap オブジェクトや SiteMapNode オブジェクトと連携して、適切なリンクが自動的に表示されます)。
SiteMap、SiteMapNode、SiteMapProvider の各オブジェクトを独自のコードで使用すると、サイトマップ構造を走査したり、カスタム コントロールを作成してサイトマップ データを表示したりできます。サイト マップに書き込むことはできませんが、オブジェクトのインスタンスでサイトマップ ノードを変更することはできます。詳細については、「方法 : メモリ内のサイトマップ ノードをプログラムで変更する」または「方法 : サイトマップ ノードをコードによって列挙する」を参照してください。
サイト ナビゲーション コンポーネント間の関係
ASP.NET サイト ナビゲーション コンポーネント間の関係を次に示します。