0

在我的应用程序中,我有一个格式为 url

www.abc.com/mypage#yourId=ASDF2345.

如何从 asp.net、c# 中的 Request 对象中读回 yourId 参数的值?

如果本来

www.abc.com/mypage?yourId=ASDF2345,

然后我会从 Request 对象中的 QueryString 集合中得到这个。但是#在 yourId 参数之前有一个并且它不是由 QueryString 集合提供的。

4

3 回答 3

5

您所指的哈希实际上并未由浏览器发送到服务器。它只是客户端,C# 无法“看到”它。

如果您必须拥有该值,您可以使用 Javascript 中的 document.location.hash 属性获取它,然后通过 AJAX 将其发送回服务器。

jQuery BBQjQuery Address使这变得更容易,它们检测散列位置的变化,并可以触发事件。

于 2010-09-13T04:49:15.793 回答
2

url 后面的部分#称为“片段标识符”,在服务器上无法访问此信息。事实上,它甚至从未发送到服务器——规范保留了片段标识符,用于识别由 URL 的其余部分定位的文档片段。该规范实际上要求浏览器在发送 HTTP 请求中的 url 之前从 url 中去除片段 id。

您可以通过 javascript 在浏览器中访问片段 ID。该属性称为document.location.hash

于 2010-09-13T04:51:48.103 回答
1

使用 jQuery 在客户端读取它并手动传输到服务器。

例子:

var url = "www.abc.com/mypage#yourId=ASDF2345";
var hash = url.substring(url.indexOf('#')); // '#yourId=ASDF2345'

查看

请记住,用户可以根据需要更改哈希值。使用前检查哈希。

于 2010-09-13T04:54:16.190 回答