2010-09-08 5 views
1

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

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

Как я должен подходить к этой проблеме?

спасибо.

ответ

3

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

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

+2

Спасибо, я действительно видел это раньше. Тем не менее, я действительно хотел попробовать специализированную панель, а не шаблонный контроль. Нет ли способа повторить идентификацию без использования шаблонов? – md1337

+0

@ md1337: Я не уверен. Конструкция панели позволяет связать элементы управления сервера внутри панели с переменными-членами класса страницы. Шаблоны нет. Я не могу придумать «готовый» контроль с описанным вами поведением. Панели, Мастера, MultiViews не являются шаблонами, и все они демонстрируют поведение, с которым вы сталкиваетесь. Мне немного любопытно, почему вы хотите избежать шаблонов? – kbrimington

+3

Я предполагаю, что я просто хотел избежать беспорядка шаблонов, когда все, что мне нужно, это простой контейнер, такой как Panel, с добавленной функциональностью предоставления уникальных идентификаторов своим дочерним элементам управления. Однако, похоже, единственное решение - это настраиваемый шаблонный контроль, как вы упомянули. На самом деле есть хорошее решение по адресу http://stackoverflow.com/questions/1912283/asp-net-user-control-inner-content – md1337

Смежные вопросы