1

次のようにプログラムでいくつかのボタンが追加された 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に関するこの素晴らしいチート シートを参照してください。

4

1 に答える 1