如何用它中的哈希(#)来表示MapPageRoute?

时间:2012-04-29 10:14:47

标签: c# asp.net c#-4.0 asp.net-routing

我正在使用MapPageRoute制作到网页的路线,这很好用。不过,我希望页面滚动到底部,以显示ID div的某个bottom。我已尝试进行以下路由,但哈希值正在U​​RL中编码,因此页面不会向下滚动。

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

结果:

mydomain/onderwerpen/1/title%23bottom

当这样调用时:

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

2 个答案:

答案 0 :(得分:2)

我想我自己找到了最合适的解决方案。这个答案可供讨论。

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

答案 1 :(得分:0)

您将无法使用Response.RedirectToRoute()重定向到锚点。在您提供的代码中,routeUrl参数包含#bottom锚点。 anchor标记不属于routeUrl,因为routeUrl是用于匹配传入请求的表达式。并将#bottom锚附加到第三个参数:physicalFile将不起作用,因为,正如参数名称所示,您指定的是Web服务器上的文件名,而不是URL。

为什么不使用好的'Response.Redirect()

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