我正在将 LinkButton 控件动态添加到 PlaceHolder 中。如果我在每个 OnInit() 上添加 LinkButton 的新实例,则此 LinkButton 的 OnClick 处理程序将起作用。
但是,如果我将 LinkButton 的实例存储在会话中,然后将其添加到 PlaceHolder 的控件集合中,LinkButton.OnClick 将无法触发。
有没有办法在给定的场景中重用我存储在会话中的控件?每次都重新创建它们几乎不是一种选择。
顺便说一句 - 它是 1.1 中的继承应用程序,我刚刚迁移到 3.5。“破碎”的方法似乎在 1.1 中有效。
感谢所有的答案。
public static void Clicked(object sender, EventArgs e) {
Debugger.Break();
}
protected override void OnPreInit(EventArgs e) {
base.OnPreInit(e);
InitLinkButton();
}
private void InitLinkButton() {
var lb = new LinkButton();
plOne.Controls.Add(lb);
lb.ID = "lb";
lb.Text = "I will work.";
lb.Click += Clicked;
plOne.Controls.Add(lb);
LinkButton lb2 = null;
if (Session["lb2"] == null) {
lb2 = new LinkButton();
lb2.ID = "lb2";
lb2.Text = "I won't work.";
lb2.Click += Clicked;
Session["lb2"] = lb2;
} else {
lb2 = (LinkButton)Session["lb2"];
}
plOne.Controls.Add(lb2);
}