2011-12-29 5 views
2

Webサービスから値のリストを取得するためにJqueryのajax関数を使用してDropDownListを動的に生成するフォームがあります。私はもともとフォームを提出したButtonコントロールを持っていました。これにより、「例外:ポストバックまたはコールバックの引数が無効です。イベントの検証は有効です....」というエラーが発生しました。ボタンでフォームを送信してもLinkBut​​tonでフォームを送信しても無効なポストバックまたはコールバック引数エラーが発生する

イベント検証を無効にする(悪い)、イベント検証に登録する(この場合は動作しない)などのオプションを調べた後、最良の選択肢は、LinkBut​​tonコントロールのButtonコントロールを入れ替えることです。私はこれをやったが、確かに、今はうまくいく。

私の質問は...なぜですか?

LinkBut​​tonの違いは、イベント検証エラーが発生せず、イベント検証が行われていないため、LinkBut​​tonに変更して新たなセキュリティリスクが発生したことを意味しますか?

答えて

0

ポストバック時に返信するデータが、サーバーによって送信されたときと同じでないため、ポストバック検証エラーが発生しています。

これはScott K. Allenのblog postです。彼はあなたのウェブページのRenderイベントにあなたのドロップダウンに可能な値をすべて追加することを提案します。

この男としてイベント検証を必要としないので、独自のDropDownListを作成することもできますsuggests

私の個人的な思い出は、データのやりとりを再考する必要があるかもしれないということです。 DropDownListを動的にフィードし、ASP.NET WebFormsを使用する必要がある場合は、そのためにPostBackが必要です。必要に応じて、UpdatePanelを使用して「Ajax」を感じることができます。

+0

こんにちはパスカルさん、クライアント側のドロップダウンに可能な値を追加していますので、その時点で何がわかっていないとしても、レンダリングイベントのドロップダウンに可能な値をすべて追加することはできません時間内に私はこれを処理するためにUpdatePanelを使用していましたが、それはドロップダウンに単一の値を追加するためにオーバーヘッドが多いので、回避したいと思っていた完全なPostBackを実行します。イベント検証をオフにしたくないので、UpdatePanelのアプローチに戻す必要があるようです。 – SimonF

+0

遅れた応答のお詫び。私は最終的に、イベント検証を実装していないドロップダウンリストの独自のバージョンを作成するアプローチを使用しました。 – SimonF

+0

@SimonFなぜこれを答えとしてマークしたのだろうか。それはすべて正しかったが、あなたが聞いたことは答えられない。ボタンには何らかの動作が存在するが、リンクボタンでは動作しない理由についての質問ではありませんか? – julealgon