Что приводит к тому, что элементы управления разметкой становятся нулевыми? - PullRequest
0 голосов
/ 04 мая 2010

Хорошо, у меня очень странная проблема. У меня есть обычный UserControl с некоторыми элементами управления в разметке. На Page_Load эти элементы управления все еще null. И я попробовал EnsureChildControls

Выложено так:

Masterpage -> Страница -> mycontrol1 -> mycontrol2 -> problemcontrol

ProblemControl - это когда элементы управления являются нулевыми. MyControl1 содержит MyControl2. MyControl2 - это еще один UserControl, который содержит ProblemControl в своей разметке. На главной странице нет ничего особенного, и страница содержит MyControl1 в своей разметке. Единственная странность в том, что ProblemControl создается динамически в Page_Init.

Все работает нормально, пока я не попадаю в ProblemControl, где ни один из элементов управления не создается. ProblemControl содержит все необходимые вещи, такие как свойство Page и Parent. Я не вижу никаких проблем. Исходный код для всего этого (кроме ProblemControl) довольно обширный, поэтому я надеюсь, что кто-то может дать мне несколько советов по устранению неполадок для этой проблемы, и если кто-то сталкивался с этим раньше.

Кроме того, я могу поместить ProblemControl в другой элемент управления Page, и он будет работать нормально, это что-то вроде mycontrol1 и / или mycontrol2. Но у нас никогда не было проблем с mycontrol1, и у mycontrol2 нет ничего, что я мог бы понять с этим неправильно. (который я утомительно анализировал последние несколько часов).

У кого-нибудь еще была такая же проблема? Есть ли общие вещи, чтобы проверить?

Обновление:

Хорошо, в ближайшем будущем у меня будет небольшой тестовый сценарий, чтобы я мог его воспроизвести. Но сейчас кажется, что проблема заключается в создании UserControl изнутри UserControl динамически в Page_Init. Я могу сделать тот же код на странице ASPX, но когда я делаю это на элементе управления ASCX, он разрывается со всеми, что является нулевой проблемой, как описано выше. Разве вы не можете вкладывать UserControls!?

Ответы [ 2 ]

0 голосов
/ 04 мая 2010

Хорошо, я нашел ответ: Пользовательский пользовательский элемент управления ASP.NET для динамического добавления (проголосуйте, чтобы закрыть как дубликат

Принятый ответ есть то, что у меня сработало. Наиболее важным является использование Page.LoadControl("path..") вместо Page.LoadControl(typeof(mycontrol),null). Позднее это вызвало то же самое. Я думаю, что они оба будут делать то же самое, но, видимо, нет.

0 голосов
/ 04 мая 2010

Техника отладки в крайнем случае: бинарный поиск ошибки.

Шаг 1. Создайте пустой элемент управления BlankControl1. вместо MyControl1. Добавьте MyControl2 к нему. Это работает? Если так, проблема в MyControl2 (прогресс!). В противном случае проблема, по крайней мере, частично связана с MyControl1. Я предполагаю, что это так.

Шаг 2. Удалите как можно больше кода из MyControl1, оставив после себя код, содержащий MyControl2. Продолжайте изменять его, пока проблема не исчезнет или не станет BlankControl1. В последнем случае что-то странное, и вы захотите открыть утилиту сравнения файлов, чтобы выяснить, где скрываются различия.

Шаг 3: Теперь вы знаете, что нужно, чтобы решить проблему. Либо это приводит к решению, либо к вопросу о том, как использовать вызывающий проблемы код, не нарушая ProblemControl. В любом случае, вы намного ближе к решению.

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