ASP.NET在查询字符串之前添加/ in链接

时间:2012-04-13 22:31:54

标签: asp.net hyperlink query-string

我很难过,不知道发生了什么事。我也很难研究这个问题,因为我不知道如何提出正确的问题。对于你们任何一个人来说,这应该是一个简单的问题,但你的回答会非常受欢迎!

我有一个包含以下元素的asp.net页面:

<a href="http://www.mysite.com?id=1">Link</a>

大。

但是当我将鼠标悬停在输出页面上的链接上时,ASP会发生一些事情,该链接将导航到此网址:http://www.mysite.com/?id=1

它在查询字符串之前添加额外的“/”。我怎么能绕过这个?我不明白为什么会发生这种情况。这是web.config问题吗?即使我刚开始一个新项目,创建一个新页面,并将那个元素放在那里,它也会发生。

非常感谢!

它似乎发生在各种浏览器上。

2 个答案:

答案 0 :(得分:1)

我不确定你是否愿意这样做。

这可能正在发生,因为从技术上讲,这是形成网址的正确方法。 见RFC-1738

  

HTTP URL采用以下形式:

  http://<host>:<port>/<path>?<searchpart>
     

其中<host><port>如3.1节所述。如果:<port>   省略,端口默认为80.没有用户名或密码为
  允许。 <path>是HTTP选择器,<searchpart>是查询
  串。这是<searchpart>及其中的可选项   在“?”之前。如果<path><searchpart>都不存在,则“/”   也可以省略。

由于存在searchpart,因此需要斜杠。没有它可能会有效,但无论如何它应该可以存在。

答案 1 :(得分:1)

该斜杠是必要的,查询字符串不能立即跟随域。见http://en.wikipedia.org/wiki/URL#Syntax

您的特定网址是省略路径,但您不能省略域和路径之间的斜杠,除非域后面没有其他内容。