Я динамически добавляю элемент управления LinkButton в PlaceHolder. Если я добавлю новый экземпляр LinkButton в каждый OnInit(), то обработчик OnClick для этого LinkButton будет работать.
Однако, если я сохраню экземпляр 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);
}