ASPポストバックで発生するコントロールイベントを見つけることはできますか?
質問
Page_Load
ハンドラー内などで、発生する前に発生するコントロールイベントのリストを取得することは可能ですか?
たとえば、ボタンがクリックされた場合、 button_click
イベントハンドラーが呼び出される前にこれを把握できますか?
解決
非常に難しい質問を選択しました...この理由は、イベントが発生する方法がいくつかあるためです。
1)__EVENTTARGET(上記のとおり) 2)ボタンの名前がMyButtの場合、" MyButt ="が表示されます。クエリ文字列内。 3)各コントロール(TextBoxなど)がリクエストをチェックして、ViewStateの値が送信された値と異なるかどうかを確認すると、" Text_Changed"発射します。
ただし、#1と#2を使用していくつかの場所を確認できます。
他のヒント
残念ながら、__ EVENTTARGETの値を調べてもうまくいきません。多くの場合、その値は空になります。ポストバック処理は、イベントターゲット値(存在する場合)以上に基づいて、どのイベントを発生させるかについていくつかの決定を行います。 。
実際にイベントハンドラーを、イベントをキャプチャするすべてのコントロールに接続することを除けば、それを決定する方法はないと思います。基本的にフレームワークが行うことを行うことが可能かもしれません。コントロールが作成されてからビューステートが復元されるまでの間、投稿された値が処理される前に、それを行う必要があります。現在のコントロール値(ビューステートから)と投稿された値を比較して、基本的に 発生するイベントを決定できます。
これでの目標は何ですか?おそらくもっと良い解決策があるでしょう。
以下には、ボタンをクリックしたときのボタンのマングルIDが含まれています。
Page.Request.Form["__EVENTTARGET"]
ここに例があります質問。
別の方法は、デバッグ時にブレークポイントを設定することです。