我有一个 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);
}
现在,只要AddExportButton()
沿OnLoad()
orOnPreLoad()
方法的路径调用该方法,就可以了。AddExportButton()
但是,当从OnLoadComplete()
方法调用时,它不会触发处理程序操作。
当另一个事件处理程序(来自下拉列表)被调用时,我也想添加/创建按钮。这只发生在 OnLoad() 之后,这会破坏我的代码。
为什么会这样,在这种情况下如何使用匿名方法作为事件处理程序?
有关页面/控件创建顺序的更多信息,请参阅 Léon Andrianarivony 撰写的关于ASP.NET 页面生命周期的漂亮备忘单。