次の方法で共有


ASP.NET サイト マップ

更新 : 2007 年 11 月

ASP.NET サイト ナビゲーションを使用するには、サイト ナビゲーション API とサイト ナビゲーション コントロールがサイト構造を適切に公開できるように、サイトの構造を記述する必要があります。既定では、サイト ナビゲーション システムはサイト階層を含む XML ファイルを使用します。ただし、サイト ナビゲーション システムは別のデータ ソースを使用するように設定することもできます。詳細については、「ASP.NET サイト ナビゲーション プロバイダ」を参照してください。

Web.sitemap ファイル

サイト マップを作成する最も簡単な方法は、サイト内のページを階層的に整理した Web.sitemap という XML ファイルを作成することです。このサイト マップは、ASP.NET の既定のサイトマップ プロバイダによって自動的にピックアップされます。

Web.sitemap ファイルはアプリケーションのルート ディレクトリに配置する必要があります。ただし、Web.sitemap ファイルはその他のサイトマップ プロバイダ、つまり他のディレクトリにある他のサイトマップ ファイルを、これらのファイルが同じアプリケーションに存在する限りは参照できます。詳細については、「方法 : 複数のサイト マップとサイトマップ プロバイダを設定する」を参照してください。

yy2ykkab.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

拡張子が .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 コントロール内のドキュメントおよびツールヒントの両方として動作します。

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

サイト マップ内では、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"/>

詳細については、「方法 : 複数のサイト マップとサイトマップ プロバイダを設定する」を参照してください。

サイト マップのローカライズ

サイト マップ内の次のプロパティをローカライズできます。

Url プロパティをローカライズする、つまりユーザーのロケールに基づいて異なるナビゲーション構造を定義するには、ロケールごとに異なるサイトマップ ファイルを定義し、実行時にプログラムによって適切な Provider に切り替えるようにする必要があります。詳細については、「方法 : メモリ内のサイトマップ ノードをプログラムで変更する」を参照してください。サイト マップのローカライズの詳細については、「方法 : サイト マップ データをローカライズする」を参照してください。

参照

処理手順

方法 : メモリ内のサイトマップ ノードをプログラムで変更する

方法 : 複数のサイト マップとサイトマップ プロバイダを設定する

方法 : サイト マップ データをローカライズする

概念

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

ASP.NET サイト ナビゲーション プロバイダ

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

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

その他の技術情報

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