我在下面定义了一个非常简单的自定义控件:
public class TestCtrl : WebControl
{
protected override void OnInit(EventArgs e)
{
var btn = new Button() { ID = "test", Text = "text"};
this.Controls.Add(btn);
}
}
但是,当我希望将它们的多个实例放在同一页面上时,我得到...
'找到了具有相同 ID'test' 的多个控件。
...单击时btn
。
protected void Page_Init(object sender, EventArgs e)
{
var ctrl1 = new TestCtrl() { ID = "ctrl1" };
plc.Controls.Add(ctrl1);
var ctrl2 = new TestCtrl() { ID = "ctrl2" };
plc.Controls.Add(ctrl2);
}
有没有一种干净的方法来阻止这种情况发生?我尝试将 ClientIDMode 设置为“自动”但没有成功,因为name
渲染标记的属性"test"
在两个按钮上。
编辑:通过将“INamingContainer”添加到控件来解决
public class TestCtrl : WebControl, INamingContainer{...}