在ASP.Net的URL中检索锚链接

Tim*_*ung 21 asp.net anchor

我有一个这样的网址:

HTTP://本地主机/地点/ 663828 /曼谷天堂 - 餐厅 - 多伦多#r306040

我试图看看是否存在锚标记以及获得它在后面的代码中做一些代码逻辑的价值.

我一直在尝试使用Page.Request,但没有一个属性显示网址的锚链接部分.

例如:

回复于(this.Page.Request.RawUrl.ToString());

几乎尝试了这个页面上的组合/属性:http://www.west-wind.com/weblog/posts/269.aspx

刚刚完成这个主题:

我用永久链接复制了Stackoverflow的方法......:D

Eoi*_*ell 24

在ASP.NET中无法从服务器端检索#anchor

这是一个客户端标志,用于告诉浏览器移动到页面中的特定位置.

您可以在body onLoad事件中使用一些Javascript来检查锚点并使用ajax将其发送回服务器.

var anchorValue;
var url = document.location;
var strippedUrl = url.toString().split("#");
if(strippedUrl.Length > 1)
anchorvalue = strippedUrl[1];
Run Code Online (Sandbox Code Playgroud)

参考:http://www.wacdesigns.com/2008/01/16/retrieving-anchor-value-from-url/


ste*_*hbu 14

更明确的是,锚标记永远不会被任何浏览器作为HTTP请求的一部分发送,它只在浏览器中本地解释.ASP.NET或任何其他Web服务器技术,Microsoft或其他方式都不会在该请求上看到锚点.

RFC 1808
第2.4.1节 - "请注意,片段标识符不被视为URL的一部分."

正如其他人所建议的那样,您可以使用最近的客户端来读取浏览器窗口位置.

  • Miky只是因为有人编写了一段代码来解析URL中的锚点 - 但这并不意味着它是由任何浏览器通过网络发送的.试一试 - 使用您喜欢的网络监视器来观看电线.您将不会在HTTP请求中看到任何锚点. (11认同)

Eug*_*ica 7

可以通过以下方式从C#中的URL解析片段:

var uri = new Uri("http://localhost?id=2#token=23");
var fragment = uri.Fragment; // will return #token=23
Run Code Online (Sandbox Code Playgroud)

但是存在一个问题,浏览器不会将片段发送到服务器.如果您在请求中收到来自包含此信息的服务的请求,它也可以从服务器端获得.