• 締切済み

ASP.NET SiteMapPathコントロールで複数の階層

ASP.NET2.0で、SiteMapPathコントロールについての質問です。 ひとつのページが複数のページから遷移される場合に、サイトマップパスコントロールを使用して、階層表示を変えたいのですが、 以下のようにWeb.sitemapを書いたらUrlは一意でなければならないというエラーが発生します。 <siteMapNode url="Default.aspx" title="TOP" description="TOP">  <siteMapNode url="Default2.aspx" title="page2" description="page2">   <siteMapNode url="Default3.aspx" title="page3" description="page3" />  </siteMapNode>  <siteMapNode url="Default3.aspx" title="page3" description="page3" /> </siteMapNode> 何か良い方法はないでしょうか?

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

そうですね 自作のユーザーコントロールなどで対処になるでしょう でも、遷移データの管理をどのようにするかが問題になりそうですね XML形式でViueStateに保存しながらでしょうか 私もやったことが無いので見当が付きません m(__)m Refererなどをコレクションするのかなぁ

oregonman
質問者

お礼

ご回答ありがとうございました。 やはり自作するしかなさそうですね。 ちょっと考えてみます。 もしできたらまた書き込みます。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

siteMapに遷移経路を表示する機能はないと思います あくまで Web.sitemapに書かれたデータを元にリンクなどを配置する機能のように思います そうなると XMLで表現できないノードは表示不可能ではないかと思います ノードのキーが URLのようです このキーの重複をXMLが認めないので無理だと思います

oregonman
質問者

補足

なるほど。やはりそうですか。 そうなるとASP.NETの機能ではできなさそうですね。 遷移経路を表示する機能は自分で作成するしかないんですかね・・・

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

サイトマップでどのように表示させたいのでしょう 複数表示させたい複数のノードの片方をダミーにして Response.Redirectなどで誘導するってのはダメでしょうか …

oregonman
質問者

補足

上記のXmlの例ですと、TOPページからpage2へ行き、page2からpage3へ移動した場合には、 TOP>>page2>>page3 と表示したいです。 そして、TOPページからpage3へ移動した場合には、 TOP>>page3 と表示したいのです。 これは可能なのでしょうか?

関連するQ&A

  • asp.NET初心者です。「 ’Context’は’○○○’のメンバで

    asp.NET初心者です。「 ’Context’は’○○○’のメンバではありません。」というエラーが出て困っています。 「Inherits」が原因のようなのですが、役割がいまいち分かりません。 ご教授よろしくお願いします。 【あ.aspx】 1行目:<%@ Page Language="VB" AutoEventWireup="false" CodeFile="answer.aspx.vb" Inherits="○○○" %> ・・・中略・・・ <!-- ヘッダー --> <div id="header"> <h1><%=SiteMap.CurrentNode.Title%>!</h1>  ←sitemapで指定したタイトルをヘッダに表示。 </div> ============================================================= 【Web.siteMap】 <?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="def.aspx" title="Welcome" description="homepage"> <siteMapNode url="あ.aspx" title="ようこそ" description="あいう" /> ←何をいれてよいのでしょうか? </siteMapNode> </siteMap> ============================================================= 【Web.config】 <siteMap enabled="true"> <providers> <add name="JaSiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" /> </providers> </siteMap> ============================================================= よろしくお願いします。

  • ASP.NETのSiteMapPathについて

    VB2005を使用しています。(C#を使用) ASP.NETでWEBサイトを作成していまして SiteMapPathコントロールを使用する予定です。 そこで、コードからサイトマップの各ノードのurl(Web.sitemapのurl)を書き込みすることは可能でしょうか?可能であれば方法を教えていただけないでしょうか!宜しくお願いします。 ↓・Web.sitemapファイル中身 <siteMap> <siteMapNode url="" title="Top"> <siteMapNode url="" title="BBS" /> <siteMapNode url="" title="問い合わせ" /> </siteMapNode> </siteMap> (コード) protected void SiteMapPath1_ItemDataBound(object sender, SiteMapNodeItemEventArgs e) {     ここでサイトマップのUrlを書き込もうと考えています。 }

  • ASP2.0 のマスターページ

    ASP2.0初心者です。最初の画面のDefault.aspxに マスターページを設定する以下の設定をすると MasterPageFile="~/MasterPage.master" 以下のメッセージが出てしまいます。これを回避して、 Default.aspxにも、マスターページを入れるにはどうすれば よいのしょうか。よろしくお願いします。 コンテンツ ページまたはマスタ ページを参照する入れ子にされたマスタ ページでトップ レベルのコントロールでなければなりません

  • aspからasp.netへの遷移(その逆も)

    拡張子がaspの画面から拡張子がaspxの画面へ遷移することは 不可能なのでしょうか?何か特殊な方法があるのでしょうか? ありましたら教えていただけないでしょうか。 aspx画面でボタン押下時に Response.Redirect("./test1.asp")でasp画面へ遷移させると 以下のエラーとなります。 '/WebSite1' アプリケーションでサーバー エラーが発生しました。 この種類のページは処理できません。 説明: 要求されたページの種類は、明示的に禁止されるため処理されません。拡張子 '.asp' が正しくない可能性があります。 下の URL が正しく入力されていることを確認してください。 要求された URL: /WebSite1/test1.asp バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.1433; ASP.NET バージョン:2.0.50727.1433

  • ASP.NETでTimerコントロールを使用したい

    ASP.NETWebアプリケーションについての質問です。 ajaxのTimerコントロールでイベントを発生させ、画面の再描画をしようとしています。 コードは以下のような感じで、OnPreRenderイベント内で描画処理を行います。 Partial Public Class _Default Inherits System.Web.UI.Page Private str As String = "" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load str = CStr(Date.Now) End Sub Protected Overrides Sub OnPreRender( _ ByVal e As System.EventArgs _ ) Label1.Text = str End Sub End Class Timerコントロールを配置して実行したところ、 Script controls may not be registered before PreRender. というエラーが出てしまいます。 調べてみたのですが原因がわかりません。 何かプロパティの設定などが必要なのでしょうか? aspx のコードは以下のとおりです。 <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication5._Default" %> <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" ></asp:ScriptManager> <asp:Timer ID="Timer1"runat="server"></asp:Timer> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Labe> l </form> </body> </html> 回答よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • クリッカブルマップを利用したASP.netですが

    クリッカブルマップを利用したASP.netですが <asp:ImageMap ID = "ImageMAP1" runat = "server" HotSpotMode = "Navigate" ImageUrl = "~/images/top.gif"> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/menu.aspx" Right = "68" Left = "2"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page2.aspx" Right = "139" Left = "69"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page3.aspx" Right = "209" Left = "140"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page4.aspx" Right = "298" Left = "210"/> </asp:ImageMap> NavigateUrl を同じページにあるDropDwnListによって IF DropDownList.text="" then NavigateUrl = "~/website/menu.aspx?ddl=100" else NavigateUrl = "~/website/menu.aspx?ddl=" & DropDownList.text end if となるように条件によって 指定URLを変更できるようにしたいのですが どのようにしたらできるのでしょうか? ボタンの場合は クリックしたときにイベントができますが ImageMAP1でそれぞれの範囲のNavigateUrlごとに条件を入れることはできるのでしょうか? 教えてください。

  • クリッカブルマップを利用したASP.netですが

    クリッカブルマップを利用したASP.netですが 下記コードで画像表示、クリック選択場所はできたのですが クリックしてもNAVIGATEURLのページにリンクしません。 なぜでしょうか? <asp:ImageMap ID = "ImageMAP1" runat = "server" HotSpotMode = "PostBack" ImageUrl = "~/images/top.gif"> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/menu.aspx" Right = "68" Left = "2"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page2.aspx" Right = "139" Left = "69"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page3.aspx" Right = "209" Left = "140"/> <asp:Rectangle HotSpot Bottom = "47" NavigateUrl = "~/website/page4.aspx" Right = "298" Left = "210"/> </asp:ImageMap>

  • ASP.NETのカレンダーコントロール

    ASP.NETでカレンダーコントロールを使用したいのですが、日付指定やページ切り替えの際に、デフォルトではクライアントサイドのJavaScriptが使用されます。 これをすべてサーバサイドで処理することは可能でしょうか? 可能であればその実現方法を教えてください。よろしくお願いします。

  • index.htmは複数あるといけないのでしょうか?

    index.htmは複数あるといけないのでしょうか? ホームページの検索でトップページでなく下の階層のフォルダのindex.htmが表示されます。 index.htmは複数あるといけないのでしょうか?それとも内容がよく似ているのが悪いのでしょうか? ホームページの修正で下の階層にあったものを上の階層にあげて、元のindex.htmにURL変更のお知らせとしたのです。  A/index.htm(現在のトップページ)-----B/index.htm(元のトップページ、現在はAのURLに変更のお知らせ) 検索するとB/index.htmが出てきます。

    • 締切済み
    • SEO
  • Asp.netで開発しています。

    Asp.netで開発しています。 vs2005で作成したASPのモジュールをIISに移行したいのですがIIS上だとエラーがでます。 /////////////////////////////////////////////////////////////////// パーサー エラー 説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。 以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。 パーサー エラー メッセージ: 型 'test._Default' を読み込めませんでした。 ソース エラー: 行 1: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="test._Default" %> ///////////////////////////////////////////////////////////////// 拡張子.aspは簡単なサンプルを起動できるのですが、.aspxだとどれもエラーがでます。 マッピングのための処理はしたのですが・・・解決をして下さい。お願いします。

専門家に質問してみよう