如何使用INamingContainer实现自定义面板?

时间:2010-09-08 20:42:13

标签: asp.net user-controls

我正在尝试实现一个自定义面板控件,它将充当命名容器。到目前为止,我所做的就是这样。

首先这是我的自定义控件,MyPanel ......

[ToolboxData("<{0}:MyPanel runat=server></{0}:MyPanel>")]
public class MyPanel: Panel, INamingContainer
{
}

我试着这样使用它:

<cc1:MyPanel ID="A" runat="server">
    <asp:HyperLink ID="TestHyperLink" runat="server" />
</cc1:MyPanel>
<cc1:MyPanel ID="B" runat="server">
    <asp:HyperLink ID="TestHyperLink" runat="server" />
</cc1:MyPanel>

显然它不起作用,这本来就太容易了。 ASP.net仍然抱怨有2个DocumentHyperLink:

The ID 'DocumentHyperLink' is already used by another control.

我该怎么处理这个问题?

谢谢。

1 个答案:

答案 0 :(得分:3)

听起来您可能会受益于模板化控制设计,而不是Panel设计。以下是一些开始使用模板化控件的资源:

模板化设计的吸引力在于允许从另一个模板中重复服务器控件ID。