Я пытаюсь реализовать пользовательский элемент управления панелью, который будет действовать как контейнер именования. Пока что я так сделал.Как реализовать пользовательскую панель с помощью 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:
Как я должен подходить к этой проблеме?
спасибо.
Спасибо, я действительно видел это раньше. Тем не менее, я действительно хотел попробовать специализированную панель, а не шаблонный контроль. Нет ли способа повторить идентификацию без использования шаблонов? – md1337
@ md1337: Я не уверен. Конструкция панели позволяет связать элементы управления сервера внутри панели с переменными-членами класса страницы. Шаблоны нет. Я не могу придумать «готовый» контроль с описанным вами поведением. Панели, Мастера, MultiViews не являются шаблонами, и все они демонстрируют поведение, с которым вы сталкиваетесь. Мне немного любопытно, почему вы хотите избежать шаблонов? – kbrimington
Я предполагаю, что я просто хотел избежать беспорядка шаблонов, когда все, что мне нужно, это простой контейнер, такой как Panel, с добавленной функциональностью предоставления уникальных идентификаторов своим дочерним элементам управления. Однако, похоже, единственное решение - это настраиваемый шаблонный контроль, как вы упомянули. На самом деле есть хорошее решение по адресу http://stackoverflow.com/questions/1912283/asp-net-user-control-inner-content – md1337