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

How to implement a custom panel with INamingContainer?(如何使用 INamingContainer 实现自定义面板?)

本文介绍了如何使用 INamingContainer 实现自定义面板?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试实现一个可用作命名容器的自定义面板控件.到目前为止,这就是我所做的.

I'm trying to implement a custom panel control that would act as a naming container. So far here is so what I've done.

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

First this is my custom control, 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:

Obviously it doesn't work, that would have been too easy. ASP.net still complains about there being 2 DocumentHyperLink:

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

我应该如何解决这个问题?

How am I supposed to approach this problem?

谢谢.

推荐答案

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

It sounds like you might benefit from a templated control design, instead of from a Panel design. Here are some resources to get started with templated controls:

  • 模板化用户控制:http://msdn.microsoft.com/en-us/library/36574bf6.aspx
  • 模板化服务器控制:http://msdn.microsoft.com/en-us/library/aa478964.aspx

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

The appeal of templated designs is that repeating a server control ID from one template in another is permitted.

这篇关于如何使用 INamingContainer 实现自定义面板?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何使用 INamingContainer 实现自定义面板?

基础教程推荐