0

Webフォームにボタンがあり、OnClickがコードビハインドイベントにバインドされているとします。

次に、そのボタンをマスターページのコントロールのControlsコレクションに追加して、マスターページに移動します。 これは、実行時にPage_Loadイベントで実行されます。

OnClickイベントは今どこにバインドされていますか?それでも、Webフォームのコードビハインドですか、それともマスターページのコードビハインドを見ていますか?

私はこれを実行しましたが、ボタンは何も実行しません。ページをポストバックしますが、コードビハインドでバインドされたイベントを実際に実行することはありません。

どちらの場合もボタンのHTMLを確認しました。変更されたのは、名前付けコンテナの変更を反映するためのIDと名前だけでした。

Webフォーム(「MainContent」はContentPlaceholderです):

<input type="submit" id="ctl00_MainContent_DeleteButton" value="Yes, Delete" name="ctl00$MainContent$DeleteButton"/>    

マスターページ:

<input type="submit" id="ctl00_DeleteButton" value="Yes, Delete" name="ctl00$DeleteButton"/>

デバッガーを実行しましたが、バインドされたイベントにもう触れていないことを確認できます。

それをイベントにバインドするのはIDですか、それとも名前ですか?もしそうなら、それをマスターページに移動すると、このバインディングが壊れますか?

4

3 に答える 3

0

移動が原因で、コントロールの実行ライフサイクルが切断される可能性があります。

Page_Load中にコントロールを移動するとおっしゃいましたが、これはポストバックデータが処理された後、ポストバック変更通知とハンドラーが起動される前に発生します。

コントロール実行ライフサイクルリファレンス

また、これは、ポストバック処理で重要なのはUniqueIDであることを示していますが、イベントについてはよくわかりません。

于 2010-01-19T19:23:01.330 に答える
0

コントロールがマスターページにある場合、エンジンはマスターページのコードビハインドでイベントハンドラーを探します。イベントハンドラーは次のいずれかである必要があります

a。それらが定義されているのと同じスコープで宣言されている、または

b。プログラムで割り当てられます。

于 2010-01-19T16:48:33.557 に答える
0

コントロールをコード ビハインド イベントにバインドするのは属性 (例: <asp:Button ... OnClick="btnSubmit_click">) であり、この属性は上記の例では欠落しているようです。

マスター ページのボタンをダブルクリックすると、イベントが関連付けられます。イベント処理に真剣に取り組めば、興味深いものもたくさん見つかります:)

于 2010-01-19T16:45:43.673 に答える