2009-08-24 48 views
1

尝试获取c#页面的整个URL时,我遇到了一个小问题(?)问题。c#使用“#”获取完整的URL

url包含“#” - 链接ref char。我希望当我抓住的URL

例如。 http://localhost/site/page.aspx?var=1&var=2#link

我已经尝试Request.URL,Request.Querystring等,它只返回到“#” - 字符。

有没有办法抓住最后一部分?

在此先感谢

+0

为什么你需要这样的功能?也许有解决你的问题的另一种方法。 – Juri 2009-08-24 12:38:23

+0

因为页面的创建者已经使用查询字符串来传递密码,因此禁用了包含#,愚蠢的密码,我知道 – Andreas 2009-08-24 12:40:59

+0

您应该避免在查询字符串中传递密码,因为这样做可以让您从查询字符串登录,而无需帖子。一些浏览器加载项(例如Google网络加速器)可能会让这些人认为他们是导航而不是行为。作为一般规则,GET应该只显示内容,任何改变数据或状态的内容都应该是POST – Keith 2009-08-24 12:43:48

回答

6

你的问题是,#指定在页面的锚,所以浏览器认为:

http://localhost/site/page.aspx?var=1&var=2

,然后查找在页面

<a name="link">anchor</a> 

由于这是客户端,您需要将#从URL中转义出来 - 因为浏览器已将其剥离,所以无法在服务器上获取它。

8

这不可能仅使用服务器代码。 #之后的部分根本不在请求中发送,它永远不会离开浏览器。

如果您希望#之后的部分必须在将请求发送到服务器之前使用Javascript进行复制,并将值放入查询字符串中。

0

你确定#之后的东西没有发送到服务器。我很确定我几年前用ajax-app做了一个测试,在那里可以复制url并将它发送给没有javascript的人,只需在url中使用javascript浏览时修改后面的内容即可。

这是在PHP和浏览器可能是IE6。