2009-06-04 1 views
1

私は認証のためにSiteMapを使用するように拘束されています。私はこれまでSiteMapを使用していなかった経験豊かな開発者ですから、おそらくパラダイムシフトのために何かが欠けているでしょう。サイトマップshortcoming

SiteMapのURL制限を回避するために、私は< doh! > 巧みに </doh!

        <のSiteMapNodeのURL = "workflow.aspx場所=プロセス1?" 説明= "プロセス1" >

        <のSiteMapNodeのURL = "workflow.aspx:>は、クエリ文字列値を追加しましたか?場所= Process2 "description =" Process2 ">

このページは、クエリ文字列の値に基づいて適切な情報/表示を動的に返します。複数のスタブページがあります。すべてが働いたと

管理者は、今のページにアクセスし、その従業員の仕事はそれらとエイリアス編集したいので、彼らはこのようなリンクをクリックする必要があります...までは、良いアイデアのように見えた:

        HREF = workflow.aspx?場所= &プロセス1ユーザID = 12 & IDWorkflowLocation = 3340

{説明に更新} が正しくページに到達するが、

        SiteMap.CurrentNode == null;

既にサイトマップにクエリー文字列があるため、正しく追加されないためです。確かに、一意の名前のスタブ.aspxページを作成する必要はありません。何か案は?

答えて

2

はこれを試してみてください:

href=workflow.aspx?Location=Process1&amp;UserID=12&amp;IDWorkflowLocation=3340 
+0

nope。それは宛先ページに到達しますが、SiteMap.CurrentNode == null –

0

あなたは、プログラム実行時に、サイトマップノードを変更しようとしたことがありますか?この記事では、方法について説明します。http://msdn.microsoft.com/en-us/library/ms178425.aspx

私は過去にこれを使用しているが、私はすべての要求(あなたが特定のWebフォーム上でそれを定義していても)上のSiteMapResolveイベントが発生していることを覚えているようです。

これが役に立ちます。

+0

ありがとうございます、私はこれを見てみましたが、Sitemap.CurrentNodeプロパティがnullになっているため、ページに到着しても動作しません。 –

+0

明らかに、問題は、SiteMapにすでにクエリーストリングが含まれているため、それ以上のクエリーストリングパラメータを処理できないということです。 –

0

SiteMapクラスを拡張し、CurrentNodeプロパティをオーバーライドし、独自のロジックを取得してこれを取得する必要があります。

+0

ありがとう、私はそれをします。 –

+0

合意。プロバイダのCurrentNodeをオーバーライドし、Http要求と一致するノードを返します。 –