Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 是什么导致标记控件为空?_Asp.net_Debugging_User Controls_Page Lifecycle - Fatal编程技术网

Asp.net 是什么导致标记控件为空?

Asp.net 是什么导致标记控件为空?,asp.net,debugging,user-controls,page-lifecycle,Asp.net,Debugging,User Controls,Page Lifecycle,好的,我有一个很奇怪的问题。我有一个常规的UserControl,标记中有一些控件。在Page\u Load中,这些控件仍然是null。我尝试了确保ChildControl 它的布局如下: 母版页->页面->mycontrol1->mycontrol2->问题控制 ProblemControl是控件为null的位置。MyControl1包含MyControl2。MyControl2是另一个UserControl,它的标记中包含ProblemControl。母版页并没有什么特别之处,页面的标记中包

好的,我有一个很奇怪的问题。我有一个常规的UserControl,标记中有一些控件。在
Page\u Load
中,这些控件仍然是
null
。我尝试了
确保ChildControl

它的布局如下:

母版页->页面->mycontrol1->mycontrol2->问题控制

ProblemControl是控件为null的位置。MyControl1包含MyControl2。MyControl2是另一个UserControl,它的标记中包含ProblemControl。母版页并没有什么特别之处,页面的标记中包含MyControl1。唯一奇怪的是ProblemControl是在
Page\u Init
上动态创建的

在我进入ProblemControl之前,一切都很正常,在ProblemControl中没有创建任何控件。ProblemControl设置了适当的所有内容,例如页面和父属性。我看不出有什么问题。所有这些(ProblemControl除外)的源代码都非常广泛,所以我希望有人能给我一些解决这个问题的技巧,如果有人以前遇到过的话

另外,我可以将ProblemControl放在另一个页面控件上,它会很好地工作,它是关于mycontrol1和/或mycontrol2的。但是我们从来没有遇到过mycontrol1的任何问题,mycontrol2也没有任何问题。(在过去的几个小时里,我一直在乏味地分析这一点)

还有其他人有同样的问题吗?有什么常见的东西需要检查吗

更新:


好的,在不久的将来,我将有一个小的测试用例来复制它。但就目前而言,似乎是在
Page_Init
中从UserControl内部动态创建UserControl导致了问题。我可以在ASPX页面上执行相同的代码,但是当我在ASPX控件上执行该操作时,就会出现上述所有为空的问题。你不能嵌套用户控件吗

最后的调试技术:二进制搜索bug

步骤1:创建空白控件BlankControl1。代替MyControl 1。将MyControl2添加到它。它有用吗?如果是这样,问题就出在MyControl 2中(进度!)。否则,问题至少部分涉及MyControl 1。我假设情况就是这样

步骤2:从MyControl1中删除尽可能多的代码,留下包含MyControl2的代码。继续修改它,直到问题消失或变为空白。在后一种情况下,有些奇怪,您需要打开一个文件比较实用程序来找出差异隐藏的位置


第三步:你现在知道如何解决问题了。这要么导致了一个解决方案,要么导致了一个问题,即如何在不破坏ProblemControl的情况下使用引发问题的代码。无论哪种方式,你都离解决方案更近了。

好的,我发现了答案:(请投票以重复方式关闭。)

公认的答案是对我有效的。最重要的是使用
Page.LoadControl(“path..”)
而不是
Page.LoadControl(typeof(mycontrol),null)
后者导致了完全相同的事情发生。我想他们会做同样的事情,但显然不是。

aw:(我不喜欢这类调试..但我想我明天在工作时必须这样做..可能是重复的