以下に定義されている非常に単純なカスタム コントロール ive があります。
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);
}
これが起こらないようにするきれいな方法はありますか?name
レンダリングされたマークアップのプロパティが"test"
両方のボタンにあるため、ClientIDMode を「Auto」に設定しようとしましたが、成功しませんでした。
編集:「INamingContainer」をコントロールに追加することで解決
public class TestCtrl : WebControl, INamingContainer{...}