我是 .NET 的初学者,从昨天早上开始搜索以解决我的问题,但没有找到解决方案。
这是我的问题:
我通过这种方式动态创建了一些用户控件,因为我需要提供参数:
List<ANNOUNCEMENT> listAnnouncement = getAnnoucements();
foreach(ANNOUNCEMENT ann in listAnnouncement)
{
if(ann.IS_CURRENT_ANNOUNCEMENT && currentAnnouncement == null)
{
currentAnnouncement = ann;
}
List<Object> listParams = new List<Object>();
listParams.Add(ann);
AnnouncementPresentation ap = (AnnouncementPresentation)(Controller.LoadControl(Page, "~/UserControls/AnnouncementPresentation.ascx", listParams.ToArray()));
/* important for the end of the method */
ap.modifyAnnouncementButtonClick += new EventHandler(modifyAnnouncementButtonClick);
pnl_announcements.Controls.Add(ap);
}
在这个 ASCX 中,我有一个按钮,当用户单击它时,我想调用包含在我的 ASPX 中的方法,所以我在 ASCX 中执行此操作:
public event EventHandler modifyAnnouncementButtonClick;
protected void btn_modify_announcement_Click(object sender, EventArgs e)
{
PageAdminAnnonces.currentAnnouncement = annonce;
modifyAnnouncementButtonClick(sender, e);
}
这在 ASPX 中:
protected void modifyAnnouncementButtonClick(object sender, EventArgs e)
{
initListOfAnnouncement();
lbl_errors.Text = currentAnnouncement.TITLE;
}
我认为一切正常,但有一个问题:它工作一次,在方法结束时,我删除了我的 ASCX,如您所见,并创建新的 ASCX。但是他们没有方法,当我再次单击时,没有任何效果,因此重新加载了 ASPX。重新加载后,它再次工作。
我做错了什么吗?