1

我们有一个巨大的网格,我们有复选框和相同的文本框。

我们遇到了奇怪的行为,一个例子是底部的按钮确实会导致回发,但执行步骤调试表明事件处理程序没有被调用。

所以我们将按钮移到页面顶部,现在正在调用事件处理程序。

我们还注意到,在同一个请求中,如果我们检查顶部的一些项目和底部的一些项目,顶部的项目会更新,而底部的项目不会。

所以我们这样做了

        string strReturn = "";
        foreach (string strKey in Request.Form.AllKeys)
        {

            if (strKey.IndexOf(".x", 1) < 1 && strKey.IndexOf(".y", 1) < 1)
                strReturn += "<br> "  + strKey + " : " + Request.Form[strKey];
        }
        Response.Write(strReturn);

这样做是为了打印所有表单变量,结果发现有一个截止点。在查看源代码时,我们可以正确地看到表单元素(文本框、复选框),而在提交它们时,我们的代码不会看到它们。所以在某些时候请求被截断,它会影响表单元素,包括我们上面讨论的按钮。

我们确实禁用了网格的视图状态,但它仍然不起作用。我们的网络配置文件中也有这个来最大化请求大小,我们也用它来上传文件 httpRuntime maxRequestLength="2097151" executionTimeout="300000000000"

我们知道我们的代码循环了足够多的时间,但是我们得到的值是空的,因为它们在请求中不存在。

这适用于一台开发机器,但不适用于生产服务器或另一台开发机器。

任何帮助将不胜感激。

提前致谢。

4

1 回答 1

2

我很可能遇到了由此处描述的更新引起的问题。

Microsoft 安全更新 MS11-100 将 HTTP 请求中的表单密钥、文件和 JSON 成员的最大数量限制为 1000。

如果您可以通过分页减小网格的大小,则可能会消除/缓解该问题。否则,您可以增加 web.config 中的最大值

<configuration>
  <appSettings>
    <add key="aspnet:MaxHttpCollectionKeys" value="1000" />
  </appSettings>
</configuration>

更多信息在这里

于 2012-05-23T21:31:19.397 回答