1

私は今日たくさんグーグルで検索しましたが、私の問題に対する役立つ答えは見つかりませんでした.

次のように、別の Web カスタム コントロール (CustomControl2) を呼び出す Web カスタム コントロール (CustomControl1) があります。

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);  

        for (int i= 0; i < 2; i++)
        {
             Panel pn = new Panel();

             Controls.Add(pn);

             CustomControl2 ct2= new CustomControl2();
             ct2.ID = "CustomControl2";

             pn.Controls.Add(rowControl);
        }
    }

CustomControl2 が作成されるたびに、{parentId} + "CustomControl2" として ID が与えられると思っていましたが、そうではなく、そのため、「ID CustomControl2 を持つ複数のコントロールが見つかりました」と表示されます。CustomControl2 Id を一意にできることはわかっていますが、理解できないのは、ID が親 ID に埋め込まれていない理由です。

フィードバックをお寄せいただきありがとうございます。

4

1 に答える 1

0

自分でこれをしなければならなかったのですがINamingContainer、Web コントロールに「マーカー」インターフェイスを実装するだけで済みます。これにより、.net はコントロールのインスタンスごとに ID 名前空間を生成します (つまり、すべての子コントロールには、必要に応じて親コントロールの ID がプレフィックスとして付けられます)。

于 2013-10-22T14:44:06.770 に答える