4

私は使用しています

__doPostBack(clientIdOfSomeButton, someData);

JavaScript で PostBack を作成します。問題は、事前に知られてsomeDataないことであり、イベントの検証が開始されます。ClientScript.RegisterForEventValidation someData

これまでのところ、この問題を解決する方法は 2 つしかありません。

  1. ページのイベント検証をオフにします。これは、セキュリティ上の理由からお勧めできません。
  2. イベント検証を介してデータを渡す代わりに、JavaScript を介して非表示のテキスト フィールドにデータを配置し、 を呼び出します__doPostBack。それは醜いです。

私が見逃した3番目のオプションはありますか?理想的には のようなものが欲しいのClientScript.RegisterForEventValidationIgnoreArguments(myButton)ですが、このようなものは存在しません...

4

1 に答える 1

6

someData が事前にわかっていない場合、サーバーはどのようにしてポストバックの意味を知るのでしょうか? 2 番目の引数は、ユーザーが入力した値ではなく、イベントのタイプまたはイベントに関する特定の情報を示すためのものです。

カスタム引数を登録して、別の方法で someData を渡します。

ClientScript.RegisterForEventValidation(clientIdOfSomeButton, "CustomEvent");

そしてクライアント上で

HTML

<input name="customArgument" type="hidden" value="" />

Javascript

document.forms[0].customArgument = someData;
__doPostBack(clientIdOfSomeButton, '');

次に、値を取得します

if(Request["__EVENTARGUMENT"] == "customArgument")
{
   var customArgument = Request["customArgument"]
}
于 2011-08-17T15:20:59.710 に答える