asp.net - 路由到另一个页面上的 anchor

标签 asp.net routes anchor asp.net-4.0 webforms-routing

我正在 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/

相关文章:

c# - 如何在Linq查询中的选择条件中放置where条件

c# - Windows 10 通用平台 aoo 模块 CommonLanguageRuntimeLibrary 中的错误 :Cannot find type System. MarshalByRefObject

routes - 导轨 3 : subdomain routes

javascript - 如何在另一个文件中正确应用路由

reactjs - React Router browserHistory 推送和 anchor

ios - 从右点更改 UISearchBar 宽度

c# - 美国电话格式需要正则表达式

asp.net - 如何保留 SignalR 连接 ID

javascript - 强制 Angular 在任何路线/位置更改时重新加载

html - 如何转到位于文件夹内的 angularJS 应用程序