Связанный элемент управления из разметки ASP.NET - PullRequest
0 голосов
/ 14 ноября 2010

У меня есть элемент управления, который выглядит следующим образом:

public class MyControl : Control
{
   [Bindable(true)]
   public MyControl MyControlParent { get; set; }
   // snip
}

В моей разметке я хочу следующее:

<tag:MyControl ID="foo" runat="server">
   <tag:MyControl ID="bar" MyControlParent="foo" runat="server"></tag:MyControl>
</tag:MyControl>

Причина, по которой я хочу иметь возможностьНазовите родителя следующим образом, потому что я также хотел бы иметь возможность сделать что-то вроде этого: или

<tag:MyControl ID="foo" runat="server">
    <tag:MyControl ID="foobar" runat="server">
       <tag:MyControl ID="bar" MyControlParent="foo" runat="server"></tag:MyControl>
    </tag:MyControl>
</tag:MyControl>

или

<tag:MyControl ID="foo" runat="server"></tag:MyControl>
<!-- snip -->
<tag:MyControl ID="bar" MyControlParent="foo" runat="server"></tag:MyControl>

Я попытался добавить преобразователь типа, ноон срабатывает до того, как HttpContext.Current.Handler установлен, что означает, что я не могу искать элементы управления страницы для нужного экземпляра MyControl.Родительско-дочерние отношения в этом элементе управления привносят определенное наследование значений свойств и не обязательно (читай, не должны) подразумевают родительско-дочерние отношения в дереве элемента управления.

Существует ли (практическое) решение для этогопроблема или я просто хочу больше, чем это возможно сейчас?=)

Приветствия
// Даниил

1 Ответ

0 голосов
/ 14 ноября 2010

Основная проблема с вашим кодом заключается в том, что вы устанавливаете для свойства MyControlParent значение ID родительского элемента управления, а не для самого элемента управления, однако свойство объявляется с типом MyControl.Было бы нормально изменить тип вашего свойства на строку, а затем в другом месте кода найти фактический элемент управления из идентификатора.

...