为什么Request.QueryString [“key”]停止工作?

时间:2010-07-05 09:34:53

标签: c# asp.net query-string sitecore

我在文件夹结构webroot / folder /

中有一个名为default.aspx的简单Web表单

当我导航到http://myapp/folder/?key=value时,页面返回正常,当我打电话

<%= Request.QueryString[0] %>

我在页面上呈现http://myapp/folder/?key=value。但是,如果我打电话

<%= Request.QueryString["key"] %>

我什么也没得到,当我打电话时

<%= Request.QueryString[1] %>

我得到Index was out of range. Must be non-negative and less than the size of the collection.

这似乎是一个非常微不足道的问题,但我无法弄清楚发生了什么?!

5 个答案:

答案 0 :(得分:3)

事实证明,在幕后,Sitecore将查询字符串转换为

  

?页=所述请求-page.aspx?键=值

但浏览器中的网址按要求显示。显然坚持一秒钟?在实际的网址中,第二个之后的所有内容?消失

答案 1 :(得分:0)

如果应用断点,然后将鼠标悬停在Visual Studio中的QueryString上,则应该能够查看所有键。或者,您可以预览集合并打印出关键名称,看它是否与您期望的略有不同。

答案 2 :(得分:0)

如果您正在做一些不应该在Sitecore控制下的事情(尽管我从未发现它使得无法使用QueryString集合),请尝试将/ folder /添加到ignoreUrl设置。然后,Sitecore会脱离你的头发; - )

答案 3 :(得分:0)

您的查询字符串应位于/default.aspx?key = value中,然后您就可以使用[“key”] param访问

答案 4 :(得分:0)

你可以使用

Request.QueryString.Count();

并相应地获取查询字符串修改代码的计数