繁体   English   中英

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

[英]What causes markup-controls to be null?

好吧,我有一个非常奇怪的问题。 我有一个常规的UserControl,在标记中带有一些控件。 Page_Load这些控件仍然为null 我已经尝试过确保EnsureChildControls

它的布局如下:

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

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

一切正常,直到我进入没有创建任何控件的ProblemControl。 ProblemControl具有所有适当的设置,例如Page和Parent属性。 我没有看到任何问题。 所有这些代码(ProblemControl除外)的源代码都很丰富,因此我希望有人可以给我一些有关此问题的疑难解答提示,以及以前是否有人遇到过。

另外,我可以将ProblemControl放在另一个Page控件上,它将正常工作,这与mycontrol1和/或mycontrol2有关。 但是我们的mycontrol1从来没有任何问题,而mycontrol2没有任何我可以看到的错误。 (在过去的几个小时中,我一直在进行乏味的分析)。

还有其他人有同样的问题吗? 有什么共同的事情要检查吗?

更新:

好的,在不久的将来,我将有一个小的测试用例,可以与之一起重现。 但是现在看来,似乎是从Page_Init的UserControl内部动态创建UserControl的原因。 我可以在ASPX页面上执行相同的代码,但是当我在ASCX控件上执行该代码时,它就会中断,一切如上所述都是空问题。 您不能嵌套UserControls吗?

不得已的调试技术:二进制搜索错误。

步骤1:创建一个空白控件BlankControl1。 代替MyControl1。 将MyControl2添加到它。 它行得通吗? 如果是这样,则问题出在MyControl2中(正在进行中!)。 否则,问题至少与MyControl1有关。 我会假设是这种情况。

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

步骤3:现在您知道了解决问题所需的措施。 要么这导致一个解决方案,要么这导致了一个问题,即如何使用引起问题的代码而不破坏ProblemControl。 无论哪种方式,您都离解决方案更近了。

好的,我已经找到了答案: ASP.NET自定义用户控件可以动态添加 (请投票以重复形式关闭)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM