次のようにプログラムでいくつかのボタンが追加された ASP.NET WebForms ページがあります。
private void AddExportButton(Control control, Action clickAction) {
LinkButton exportButton = new LinkButton {
Text = "Export",
EnableViewState = false /*Buttons will be recreated on each Postback anyway.*/
};
exportButton.Click += (sender, e) => clickAction();
control.Controls.Add(exportButton);
}
メソッドがorメソッドAddExportButton()
からのパスに沿って呼び出される限り、これは機能します。ただし、メソッドから呼び出された場合、ハンドラー アクションは起動しません。OnLoad()
OnPreLoad()
AddExportButton()
OnLoadComplete()
別のイベント ハンドラー (ドロップダウンからの) が呼び出されたときにも、ボタンを追加/作成したいと思います。これは OnLoad() の後にのみ発生し、コードが壊れます。
これはなぜですか? この場合、匿名メソッドをイベント ハンドラーとして使用するにはどうすればよいですか?
ページ/コントロールの作成順序の詳細については、Léon Andrianarivony によるASP.NET Page LifeCycleに関するこの素晴らしいチート シートを参照してください。