- - PR -
無効なポストバックまたはコールバック引数です、のエラー対策
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-05-31 22:27
ASP.net2.0でwebサイトを構築しています。
マスターページを使用しているのですが、 データグリッドに4000件程度を表示する際に、 先にマスターページの部分が表示されます。 その後、データグリッドが表示されるまで、数秒あるのですが、 その間に、リンクやボタンで画面を移動しようとすると、 「System.Web.HttpException: 種類 'System.Web.HttpException' の例外がスローされました。 ---> System.Web.HttpUnhandledException: 種類 'System.Web.HttpUnhandledException' の例外がスローされました。 ---> System.ArgumentException: 無効なポストバックまたはコールバック引数です。イベントの検証は、 構成の 、またはページの を使用して有効にされます。セキュリティの目的により、この機能は、 イベントをポストバックまたはコールバックする引数が、 それらを最初に表示したサーバー コントロールから発行されていることを確認します。 データが有効であり、予期されている場合、検証のためのポストバックまたはコールバック データを登録するために ClientScriptManager.RegisterForEventValidation メソッドを使用してください。 」のエラーが発生します。 原因として、 ASPによって、「__EVENTVALIDATION」のhiddenタグが一番下に追加されるのですが、 それが追加される前に、submitが走ると発生しています。 ※MSのセキュリティ仕様とのこと。 対策として、ASPが作成する、 function __doPostBack()内に、「__EVENTVALIDATION」のhiddenタグが ある/ないの判定を入れて、ない場合はsubmitしないように 制御したいのですが、ご質問です。 @対策方法はあっているのか?(他に方法はないか?) Afunction __doPostBack()を改造する方法は? いろいろとネットを回ってみて、上記の対策を検討したのですが、 いまいち対策方法に自信がありません。 どなたかご存知の方いらっしゃいましたらご教授いただけると幸いです。 | ||||
|
投稿日時: 2007-05-31 23:09
まず 4000件 のデータを一覧表示する必要が本当にあるのか
__EVENTVALIDATION を確認するだけでいいのか といった疑問はありますが、 クライアントスクリプトで、対象が undefined か null かをチェックすればそれらしい動きはできるんじゃないでしょうか。 _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-05-31 23:58
NAL-6295です。
クライアントサイドスクリプトでonSubmitイベントを捕捉し その中で対象の存在を確認するか、 そもそも全て読み込まれた後なのかをクライアントサイドのonClickイベント内で確認するかですね。 | ||||
|
投稿日時: 2007-06-01 16:07
早速のご回答有難う御座います。
やはりjsでカバーするしかないようですね。 window.document.onclick にjsの関数をセットして、 「__EVENTVALIDATION」を判定、なければクリック無効、 の方法でうまくいきました。 ASP.net 2.0で開発している方が、 皆が皆、このようなことをしているのか疑問が残りましたが、 おかげさまで実現できたので、助かりました。 有難う御座いました。 | ||||
|
投稿日時: 2007-06-01 20:08
たぶん、皆が皆そんなことはやってないと思いますよ。 僕もほとんど必要性を感じません。 そもそも2000行ものデータを一覧表示する必要性を感じませんから。 _________________ かるあ のメモ と スニペット |
1