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