none
サイトマップの現在のノードを取得したい。 RRS feed

  • 質問

  • neo_rb25detと申します。
    よろしくお願いします。

    VisualStudio2005、VB.NETでwebページを作成しています。
    webページ上にはTreeViewコントロールを配置し、
    SiteMapDataSourceのProviderプロパティでSiteMapProviderを設定して
    サイトマップデータをバインドしています。
    *Web.Config内の<providers>でサイトマップファイルを指定しています。
    *サイトマップを複数使用したいため、Web.Sitemapは使用していません。

    現在のページのサイトマップノードを取得するには
    通常は「SiteMap.CurrentNode」で取得できると思うのですが、
    これだと既定のサイトマップファイル「Web.Sitemap」を探してしまうため、
    エラーとなってしまいます。

    ライブラリやwebページを検索して
    いいプロパティが無いか探したのですが見つかりませんでした。
    Web.Sitemapを使用しない場合の現在のノードの取得方法を教えてください。
    よろしくお願いします。

    --
    最終的にやりたいことは、
    webページ内のハイパーリンクなどで前/次のノードへのリンクを張ることです。

    2007年10月18日 10:57

すべての返信

  • 確認はしていないのですが。

     

    > 現在のページのサイトマップノードを取得するには
    > 通常は「SiteMap.CurrentNode」で取得できると思うのですが、
    > これだと既定のサイトマップファイル「Web.Sitemap」を探してしまうため、
    > エラーとなってしまいます。

     

    サイトマップデータがバインドされるより以前にCurrentNodeを取り出そうとしているからエラーになっている、ということはありませんか?
    もしそうだとすればCurrentNodeを取り出すタイミングを変えればうまくいくような気がします。

     

    2007年10月19日 4:59
  • 返信ありがとうございます。

    >サイトマップデータがバインドされるより以前に

    >CurrentNodeを取り出そうとしているからエラーになっている、ということはありませんか?

    >もしそうだとすればCurrentNodeを取り出すタイミングを変えればうまくいくような気がします。

    確実に先にバインドされる様に、

    試しにボタンを配置して、ボタンのクリックイベントの中で書いてみましたが、だめでした…。

    2007年10月20日 1:07
  • ボタンをクリックしたら間違いなくバインドが発生します???

    違うような気がするけど。。。

     

    ためしにPage_PreRenderCompleteイベントあたりでCurrentNodeをひろってもとりだせませんか?

    2007年10月20日 2:07
  • >ボタンをクリックしたら間違いなくバインドが発生します???

    >違うような気がするけど。。。

     かなり、安易な発想なのですが、

    一度、エラーを出さずにページを全て読み込めばバインドできますので、

    その後でボタンをクリックすればすでにバインドされていると考えました。


    で、そもそもなのですが、
    (自分ではなにもせずに)「SiteMap.CurrentNode」と記述して
    「web.sitemap」からノードを取得できるということは、
    「SiteMap」は勝手にインスタンス化され(??)
    サイトマップデータも勝手にバインドされているのでしょうか??

    そう考えると、何らかの方法で「SiteMap」とは別に自分でインスタンスを作成し、
    SiteMapDataSourceを割り当てられないものでしょうか…。
    2007年10月20日 13:23