在我的应用程序中,我有一个格式为 url
www.abc.com/mypage#yourId=ASDF2345
.
如何从 asp.net、c# 中的 Request 对象中读回 yourId 参数的值?
如果本来
www.abc.com/mypage?yourId=ASDF2345
,
然后我会从 Request 对象中的 QueryString 集合中得到这个。但是#
在 yourId 参数之前有一个并且它不是由 QueryString 集合提供的。
在我的应用程序中,我有一个格式为 url
www.abc.com/mypage#yourId=ASDF2345
.
如何从 asp.net、c# 中的 Request 对象中读回 yourId 参数的值?
如果本来
www.abc.com/mypage?yourId=ASDF2345
,
然后我会从 Request 对象中的 QueryString 集合中得到这个。但是#
在 yourId 参数之前有一个并且它不是由 QueryString 集合提供的。
您所指的哈希实际上并未由浏览器发送到服务器。它只是客户端,C# 无法“看到”它。
如果您必须拥有该值,您可以使用 Javascript 中的 document.location.hash 属性获取它,然后通过 AJAX 将其发送回服务器。
jQuery BBQ或jQuery Address使这变得更容易,它们检测散列位置的变化,并可以触发事件。
url 后面的部分#
称为“片段标识符”,在服务器上无法访问此信息。事实上,它甚至从未发送到服务器——规范保留了片段标识符,用于识别由 URL 的其余部分定位的文档片段。该规范实际上要求浏览器在发送 HTTP 请求中的 url 之前从 url 中去除片段 id。
您可以通过 javascript 在浏览器中访问片段 ID。该属性称为document.location.hash
。
使用 jQuery 在客户端读取它并手动传输到服务器。
例子:
var url = "www.abc.com/mypage#yourId=ASDF2345";
var hash = url.substring(url.indexOf('#')); // '#yourId=ASDF2345'
请记住,用户可以根据需要更改哈希值。使用前检查哈希。