我有一个LinkButton
动态创建的Load
,然后添加到Master
页面上的控件中。这是用于创建的原始代码LinkButton
:
LockUnlock = new LinkButton() { ID = "LockUnlock", Visible = false };
LockUnlock.Click += LockUnlock_Click;
现在,当我第一次研究这个问题时,我认为它可能与 ASP.NET 生命周期有关,所以我将代码移到了override OnInit
.,但这并没有解决它。
然后我继续设置,ID
因为那还没有完成。所以我添加了这一行:
LockUnlock.ID = "LockUnlock";
我都试过了OnInit
-Load
没有运气。
然后我想,因为我将它添加到一个自定义控件中,它实际上是 a 的一部分,ContentPlaceHolder
我可能需要制作ID
静态来让它工作,所以我添加了这个:
LockUnlock.ClientIDMode = ClientIDMode.Static;
我只在 中尝试过Load
,但没有运气,老实说,如果它不起作用,Load
它几乎肯定不会改变任何东西OnInit
- 这只是我的第一步,在很多方面真的是一个冰雹玛丽。
好的,所以现在我觉得它与ResourceCenter
添加到 a 的自定义控件这一事实有关ContentPlaceHolder
,因此该事件虽然在技术上已连接,但由于上下文而无法触发的class
。但我不确定从这里去哪里。
我需要为点击添加共享类吗?我是否需要在自定义控件中连接单击,然后以某种方式从那里委托它?
我宁愿 不使用这些解决方案中的任何一个,但是,嘿,我们做我们必须做的!我期待大家对此的意见。
编辑
将控件添加到的代码ResourceCenter
如下所示:
this.ResourceCenter.AddAdminLink(LockUnlock.Visible ? LockUnlock : null);
并且添加到其列表的控件内的代码ResourceCenter
如下所示:
if (link == null) { return; }
var wrapper = new HtmlGenericControl("li");
wrapper.Controls.Add(link);
this.AdminLinkList.Controls.Add(wrapper);
wherelink
是上述行传递给方法的内容。