【问题标题】:Why has Request.QueryString["key"] stopped working?为什么 Request.QueryString["key"] 停止工作?
【发布时间】:2010-07-05 09:34:52
【问题描述】:

我在文件夹结构 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.

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

【问题讨论】:

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


【解决方案1】:

事实证明,Sitecore 在幕后将查询字符串变成了

?page=the-requested-page.aspx?key=value

但浏览器中的 url 看起来符合要求。明显坚持一秒钟?在实际的网址中,第二个之后的所有内容?消失

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 嗯,当我对集合进行 foreach 时,我得到了一个名为“page”的键。此 Web 表单位于 Sitecore CMS 项目中,但在 Visual Studio 中创建而不是通过 Sitecore 界面创建,我想知道 Sitecore 是否在页面呈现之前弄乱了页面
    【解决方案3】:

    如果您正在做的事情实际上不应该在 Sitecore 控制之下(尽管我从未发现它会导致无法使用 QueryString 集合),请尝试将您的 /folder/ 添加到 ignoreUrl 设置中。 Sitecore 将摆脱你的束缚,然后 ;-)

    【讨论】:

      【解决方案4】:

      您的查询字符串应该在 /default.aspx?key =value 中,然后您将能够使用 ["key"] 参数进行访问

      【讨论】:

        【解决方案5】:

        你可以使用

        Request.QueryString.Count();
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-30
          • 2018-01-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多