2009-03-04 8 views
0

私はC#を使用してポップアップウィンドウを開き、その中からある値を選択して値をサーバーに戻すことができます。ただし、ポップアップウィンドウを閉じると、次のエラーが表示されます。ASP.NETポストバックエラー


ポストバックまたはコールバックの引数が無効です。イベントの検証は、構成内で<pagesenableEventValidation="true"/>、またはページ内で<%@ Page EnableEventValidation="true" %>を使用して有効になっています。セキュリティ上の理由から、この機能はポストバックまたはコールバックイベントの引数が元々レンダリングされたサーバーコントロールから発生することを確認します。データが有効で予期されている場合は、ClientScriptManager.RegisterForEventValidationメソッドを使用してポストバックまたはコールバックデータを登録して検証します。 「


は誰もがこれを引き起こす可能性があるものを知ってい ?あなたは(コードビハインドに)命令的にコントロールを自分で作成しているとき

+1

ページが実際に行っていることのより良い説明が必要であり、コードの一部である可能性があります – AnthonyWJones

答えて

0

このエラーが(私にとって)まで来て、最も一般的な理由があるのではなく.aspxファイル内で宣言的に使用されます。最初のページレンダリング中に1組のコントロールを作成し、ポストバック中にページ作成ロジックで異なる(おそらくわずかに)コントロールセットが作成されます。ページがレンダリングされるたびに、ツリーの同じ位置に作成され、ポストバック時に追加されます。それ以外の場合は、このエラーが発生します。

このエラーの原因は他にもあるかもしれませんが、これは私が見た唯一のシナリオです。

0

イベントの検証を無効にします。フォームの値を自分で確認し、無効な値を受け入れないことを確認している限りは、まったく必要ありません。

1

HTMLマークアップやその他の制限付き文字が含まれているフォームに値を転記するときにこのエラーが発生しました。既定では、.NETはセキュリティの理由からこれをブロックします。

入力値のいずれかにマークアップを送信しているかどうかを確認するには、フォームを閉じるときにページにポストバックする値を確認します。

このタイプのデータを絶対に送信する必要がある場合は、ASPXページのEnableEventValidationプロパティを無効にし、注入を防ぐために検証を適用してください。

0

PAGEまたはweb.config-でEnableEventValidationをオフにすることはできますが、これはセキュリティリスクと考えられます。

あなたは試してみてください:必要なことを確認してくださいバインディングがで行われ

ない限り - あなたのポップアップ(または何か)がポストバックを行い、フォームに何かを注入された場合Page.IsPostBack

0

、その!エラーの原因となる可能性があります。

カスケード選択リスト(aspnet ajaxよりもはるかに高速)を更新するために手作業でワイヤードjquery ajax呼び出しを使用すると、このエラーが発生しました。セカンダリ選択(runat = server)に入れられた新しい値によって、失敗します。スクリプトマネージャー(これは少し痛い)で登録するか、イベントの検証を無効にすることができますが、それは少し難しく働き、すべて自分で検証することです。