Как реализовать пользовательскую панель с INamingContainer? - PullRequest
1 голос
/ 09 сентября 2010

Я пытаюсь реализовать пользовательский элемент управления панели, который будет действовать как контейнер именования.Итак, вот что я сделал.

Сначала это мой пользовательский элемент управления, 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 Ответ

3 голосов
/ 09 сентября 2010

Похоже, вы могли бы выиграть от шаблонного дизайна элемента управления, а не от дизайна Panel.Вот некоторые ресурсы для начала работы с шаблонными элементами управления:

Привлекательность шаблонных дизайнов заключается в том, что повторение идентификатора серверного элемента управления из одного шаблона в другом разрешено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...