1

巨大なグリッドがあり、チェックボックスと同じテキストボックスがあります。

奇妙な動作が発生しています。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);

これは、すべてのフォーム変数を出力することであり、カットオフがあることがわかりました。ソースを表示している間、フォーム要素(テキストボックス、チェックボックス)を正しく表示できますが、それらを送信すると、コードには表示されません。そのため、ある時点でリクエストが切り捨てられ、上記で説明したように、ボタンを含むフォーム要素に影響します。

グリッドのビューステートを無効にしましたが、それでも機能しませんでした。これは、リクエストサイズを最大化するために、Web構成ファイルにもあります。これをファイルのアップロードにも使用しましたhttpRuntime maxRequestLength = "2097151"executionTimeout = "300000000000"

コードが十分な回数ループしていることはわかっていますが、リクエストに存在しないため、取得する値はnullです。

これは、1つの開発マシンでは機能しますが、運用サーバーや他の開発マシンでは機能しません。

どんな助けでも大歓迎です。

前もって感謝します。

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 に答える