2012-04-29 9 views
3

私はMapPageRouteを使ってページへのルートを作っていますが、これはうまくいきます。しかし、ページを下にスクロールして、bottomという特定のdivを表示したいと思います。次のルートを作成しようとしましたが、ページがスクロールしないようにハッシュがURLにエンコードされています。中MapPageRouteにハッシュ(#)を付けて公式化するにはどうすればいいですか?

RouteTable.Routes.MapPageRoute("Topics", 
"onderwerpen/{ID}/{name}#bottom", 
"~/TopicPage.aspx" 
); 

結果:

mydomain/onderwerpen/1/title%23bottom 

このように呼ばれる:

Response.RedirectToRoute("Topics", new { ID = 1, name = "title" }); 

答えて

1

自分で最も適切な解決策を見つけたと思います。この答えは議論のために開いています。

string url = Page.GetRouteUrl("Topics", new { ID = 1, name = "title" }); 
Response.Redirect(url + "#bottom"); 
0

あなたはResponse.RedirectToRoute()を使用してアンカーにリダイレクトすることができません。指定したコードでは、routeUrlパラメータには#bottomのアンカーが含まれています。 routeUrlにアンカータグは属しません。routeUrlは着信要求との照合に使用される式なので、アンカータグはrouteUrlに属しません。 physicalFileには、#bottomのアンカーを3番目のパラメータに追加することはできません。パラメータ名が示すように、URLではなくWebサーバー上のファイル名を指定しているためです。

いいえ「Response.Redirect()」を使用してください。

Response.Redirect("onderwerpen/1/title#bottom"); 
+0

今のために働くだろうはい、それ以降のトピックページへのルートは、いくつかのケースでは、リダイレクトされませんなぜ、誰もが理解していない、別の文字列に「onderwerpen」からGlabal.asax' 'に変更された場合正しく。可能であれば、既に存在するルートを使用したソリューションを好むだろう。私はもはやアンカーが含まれていないルートを変更することができますが、どこで指定するのですか? – Bazzz

+0

私はあなたが何を意味しているかを見ていますが、リダイレクトを設定せずに既存のページのURIを変更することは、可能な限り避けるべきであると主張します。サイトのすべてのリンクと内部URI参照を変更しても、外部リンクやブックマークを変更することはできません。また、同じページへの複数のルートを維持することを妨げるものは何もありません。この件に関するティム・バーナーズ・リーの暴言を参照してください(http://www.w3.org/Provider/Style/URI.html)。 –

関連する問題