ASP.NET サイト マップ
更新 : 2007 年 11 月
ASP.NET サイト ナビゲーションを使用するには、サイト ナビゲーション API とサイト ナビゲーション コントロールがサイト構造を適切に公開できるように、サイトの構造を記述する必要があります。既定では、サイト ナビゲーション システムはサイト階層を含む XML ファイルを使用します。ただし、サイト ナビゲーション システムは別のデータ ソースを使用するように設定することもできます。詳細については、「ASP.NET サイト ナビゲーション プロバイダ」を参照してください。
Web.sitemap ファイル
サイト マップを作成する最も簡単な方法は、サイト内のページを階層的に整理した Web.sitemap という XML ファイルを作成することです。このサイト マップは、ASP.NET の既定のサイトマップ プロバイダによって自動的にピックアップされます。
Web.sitemap ファイルはアプリケーションのルート ディレクトリに配置する必要があります。ただし、Web.sitemap ファイルはその他のサイトマップ プロバイダ、つまり他のディレクトリにある他のサイトマップ ファイルを、これらのファイルが同じアプリケーションに存在する限りは参照できます。詳細については、「方法 : 複数のサイト マップとサイトマップ プロバイダを設定する」を参照してください。
セキュリティに関するメモ : |
---|
拡張子が .sitemap 以外のファイル名を持つファイルにサイトマップ データを格納するカスタム サイトマップ プロバイダを実装すると、セキュリティ上の問題が発生する可能性があります。既定では、ASP.NET は既知の拡張子 (.sitemap など) を持つファイルをクライアントによるダウンロードから保護するように設定されています。データを保護するために、ファイル名の拡張子が .sitemap 以外のカスタム サイトマップ データ ファイルは App_Data フォルダに配置してください。詳細については、「ASP.NET のサイト ナビゲーションの保護」を参照してください。 |
深さが 3 レベルの単純なサイトをサイト マップがどのように検索するかを次のコード例に示します。url 属性の先頭に、アプリケーション ルートを示す "~/" ショートカットを付けることができます。詳細については、「ASP.NET Web サイトのパス」を参照してください。
<siteMap>
<siteMapNode title="Home" description="Home" url="~/default.aspx">
<siteMapNode title="Products" description="Our products"
url="~/Products.aspx">
<siteMapNode title="Hardware" description="Hardware choices"
url="~/Hardware.aspx" />
<siteMapNode title="Software" description="Software choices"
url="~/Software.aspx" />
</siteMapNode>
<siteMapNode title="Services" description="Services we offer"
url="~/Services.aspx">
<siteMapNode title="Training" description="Training classes"
url="~/Training.aspx" />
<siteMapNode title="Consulting" description="Consulting services"
url="~/Consulting.aspx" />
<siteMapNode title="Support" description="Supports plans"
url="~/Support.aspx" />
</siteMapNode>
</siteMapNode>
</siteMap>
Web.sitemap ファイルで、Web サイトの各ページに対して siteMapNode 要素を追加します。次に、siteMapNode 要素を入れ子にすることで、階層を作成できます。前述の例では、Hardware と Software のページは Products siteMapNode 要素の子要素です。title 属性は、通常はリンク テキストとして使用されるテキストを定義し、description 属性は SiteMapPath コントロール内のドキュメントおよびツールヒントの両方として動作します。
メモ : |
---|
サイト マップ内では、Web アプリケーション外部の URL を参照できます。アプリケーション外部の URL へのアクセスは、ASP.NET ではテストできません。そのため、セキュリティ トリミングを有効にした場合、ロール属性を "*" に設定しない限りサイトマップ ノードは参照できません。"*" 属性を設定すると、すべてのクライアントが URL へのアクセスをテストせずにサイトマップ ノードを表示できます。詳細については、「ASP.NET のサイト マップ セキュリティ トリミング」を参照してください。 |
有効なサイト マップ
有効なサイトマップ ファイルは、siteMap 要素の直下に配置されている siteMapNode 要素を 1 つだけ含みます。ただし、最初のレベルの siteMapNode 要素は、子の siteMapNode 要素をいくつでも含むことができます。また、有効なサイトマップ ファイルは重複する URL を持つことはできません。ただし、url 属性を空にすることはできます。ASP.NET の既定のサイトマップ プロバイダ以外のプロバイダでは、この制限がない場合もあります。
複数のサイト マップの設定
複数のサイトマップ ファイルまたはプロバイダを使用すると、Web サイト全体のナビゲーション構造を記述できます。たとえば、ルートの Web.sitemap ファイルは、次のコードを使用して siteMapNode 要素内の子サイトマップ ファイルを参照することによって子サイトマップ ファイルにリンクできます。
<siteMapNode siteMapFile="MySiteMap.sitemap"/>
詳細については、「方法 : 複数のサイト マップとサイトマップ プロバイダを設定する」を参照してください。
サイト マップのローカライズ
サイト マップ内の次のプロパティをローカライズできます。
Attributes コレクションに含まれるカスタム プロパティ
Url プロパティをローカライズする、つまりユーザーのロケールに基づいて異なるナビゲーション構造を定義するには、ロケールごとに異なるサイトマップ ファイルを定義し、実行時にプログラムによって適切な Provider に切り替えるようにする必要があります。詳細については、「方法 : メモリ内のサイトマップ ノードをプログラムで変更する」を参照してください。サイト マップのローカライズの詳細については、「方法 : サイト マップ データをローカライズする」を参照してください。
参照
処理手順
方法 : メモリ内のサイトマップ ノードをプログラムで変更する
方法 : 複数のサイト マップとサイトマップ プロバイダを設定する