我正在 ASP.NET 4 中使用 Web 表单路由,并且尝试路由到页面上的特定位置。在该页面上我有一个类似 <div id="3">
的元素我想从另一个页面跳转到这个 anchor 。为此,我在 global.asax
中定义了一条路线:
RouteTable.Routes.MapPageRoute("MyRoute", "Path/SubPath/{PageAnchor}",
"~/MyPage.aspx", true, new RouteValueDictionary { { "PageAnchor", null } });
链接到该页面的超链接和 anchor “3”在标记中定义如下:
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl="<%$ RouteUrl:RouteName=MyRoute,PageAnchor=#3 %>">
Link</asp:HyperLink>
生成的链接的问题是 #
URL 中的字符由 %23
编码这样:http://localhost:1234/Path/SubPath/%233
这样我就可以到达目标页面,但不会到达指定的 anchor 。
有没有办法避免这种不希望的 URL 编码?或者任何其他方式路由到 anchor ?
提前谢谢您!
最佳答案
ASP.NET 的路由功能不支持 anchor 。路由设计为仅支持应用程序路径之后、 anchor 之前的 URL 部分。
我建议添加一个事件处理程序(例如 Page_Load),并在该事件处理程序中生成 URL、附加 anchor 并在 HyperLink 控件上设置值。
当然,在大多数情况下,使用 Web 表单路由时,最简单的方法是手动将 URL 设置为您想要的任何值。当 URL 不复杂且不太可能更改时,这是一个不错的选择。
关于asp.net - 路由到另一个页面上的 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3080306/