遷移に応じてパンくずリストを切替える

「?」と思ったのですが、Google先生に聞いたら速攻で教えてくれました。というわけで、メモメモ。

SiteMapPath

.NETのSiteMapPathコントロールXML形式のhoge.sitemapを使うことで、Webページのナビゲーションリンクになるパンくずリストを作ることができる。SiteMapPathコントロールを.NETのマスターページに置けば、ページのヘッダ*1に表示するのも簡単。

SiteMapPath クラス

.NET TIPS[ASP.NET]Webフォーム上でサイト・メニュー/サイト・パスを作成するには?[2.0のみ、C#、VB]

遷移に応じたパンくずリストの切替え

じゃあ、次のような階層構造のサイトではどうすればいいの?って話です。


  • 画面遷移が親→子1→孫のとき
  • 画面遷移が親→子2→孫のとき

孫の画面で、遷移に応じて「親 > 子1 > 孫」と「親 > 子2 > 孫」を切り替えるには、どうすればよいか。

1つのhoge.sitemapファイル内に記述するURLは、一意である必要がある。つまり、URLは一度しか記述できない。子1の子要素に孫を指定して、子2の子要素にも同じ孫を指定すると、エラーになる。子画面は、親画面をただ1つしか持つことができない。ゆえに、孫の画面で、遷移に応じて異なるパンくずリストを表示するには、複数の.sitemapファイルを用意する必要がある。

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

.NET TIPS[ASP.NET]サイト内に複数のサイトマップ・ファイルを設置するには?[2.0のみ、C#、VB]

実装

  • 1. 遷移元の親ページに置いたリンクやボタンのonclickメソッド内で、現在の画面を表す値をセッションに入れます。
  • 2. マスターページのPageLoad内で、セッションの値を取得して、遷移元の画面を特定します。
  • 3. 画面に応じて、SiteMapPathコントロールのプロパティにサイトマップファイルを割り当てます。

以上でOK!

*1:HTMLのhead要素のことではなく、単なる「ページの上部」の意。