2010-05-03 2 views
0

Ok, j'ai un problème très étrange. J'ai un UserControl régulier avec quelques contrôles dans le balisage. À Page_Load, ces contrôles sont toujours null. Et je l'ai essayé EnsureChildControlsQu'est-ce qui cause la nullité des contrôles de balisage?

Il est aménagé comme ceci:

Masterpage -> Page -> MyControl1 -> mycontrol2 -> problemcontrol

ProblemControl est l'endroit où les contrôles sont nuls. MyControl1 contient MyControl2. MyControl2 est un autre UserControl qui contient ProblemControl dans son balisage. Masterpage n'a rien de spécial et Page contient MyControl1 dans son balisage. La seule bizarrerie est que ProblemControl est créé dynamiquement au Page_Init. Tout fonctionne bien jusqu'à ce que j'arrive à ProblemControl où aucune des commandes n'est créée. ProblemControl a toutes les options appropriées, telles que la propriété Page et Parent. Je ne vois aucun problème. Le code source pour tous ceux-ci (à l'exception de ProblemControl) est assez vaste, donc j'espère que quelqu'un peut juste me donner quelques conseils de dépannage pour ce problème et si quelqu'un l'a déjà rencontré auparavant.

En outre, je peux placer ProblemControl sur un autre contrôle Page et cela fonctionnera bien, c'est quelque chose à propos de mycontrol1 et/ou mycontrol2. Mais nous n'avons jamais eu de problèmes avec mycontrol1 et mycontrol2 n'a rien à voir avec ça. (que j'ai analysé avec ennui pendant les dernières heures).

Est-ce que quelqu'un d'autre a eu ce même problème? Y a-t-il des choses communes à vérifier?

Mise à jour:

Ok, je vais avoir un petit boîtier de test dans un avenir très proche pour aller avec cela pour le reproduire. Mais pour le moment, il semble que la création d'un UserControl à partir d'un contrôle UserControl dynamiquement à Page_Init est ce qui provoque le problème. Je peux faire le même code sur une page ASPX, mais quand je le fais sur un contrôle ASCX il casse avec tout le problème étant nul comme décrit ci-dessus. Ne pouvez-vous pas imbriquer UserControls !?

+0

duplication possible de http://stackoverflow.com/questions/2275625/asp-net-custom-user-control-to-add-dynamically – Earlz

Répondre

0

Ok, je l'ai découvert la réponse. ASP.NET Custom user control to add dynamically (s'il vous plaît voter pour fermer en double

La réponse acceptée il y a ce qui a fonctionné pour moi la chose la plus importante est d'utiliser Page.LoadControl("path..") plutôt que Page.LoadControl(typeof(mycontrol),null) plus tard Le causé Je pense que tous les deux feraient la même chose, mais apparemment pas.

0

Technique de débogage de dernier recours: recherche binaire de bogue.

Étape 1: créez un contrôle vide BlankControl1. à la place de MyControl1. Ajoutez MyControl2 à cela. Est-ce que ça marche? Si oui, le problème est dans MyControl2 (progression!). Sinon, le problème est au moins partiellement impliqué avec MyControl1. Je vais supposer que c'est le cas. Étape 2: Supprimez autant de code que possible de MyControl1, en laissant le code qui contient MyControl2. Continuez à le modifier jusqu'à ce que le problème disparaisse ou qu'il devienne BlankControl1. Dans le dernier cas, quelque chose est bizarre, et vous voudrez ouvrir un utilitaire de comparaison de fichiers pour savoir où les différences se cachent.

Étape 3: Vous savez maintenant ce qu'il faut pour que le problème disparaisse. Soit cela conduit à une solution, soit cela conduit à se demander comment utiliser le code induisant des problèmes sans casser ProblemControl. De toute façon, vous êtes beaucoup plus proche d'une solution.

+0

aw :(Je n'aime pas ce débogage sorta .. mais devine que je vais avoir pour le faire demain au travail .. – Earlz

Questions connexes