我正在尝试实现一个自定义面板控件,它将充当命名容器。到目前为止,我所做的就是这样。
首先这是我的自定义控件,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.
我该怎么处理这个问题?
谢谢。
答案 0 :(得分:3)
听起来您可能会受益于模板化控制设计,而不是Panel设计。以下是一些开始使用模板化控件的资源:
模板化设计的吸引力在于允许从另一个模板中重复服务器控件ID。