2010-05-03 26 views
0

好吧,我有一個很奇怪的問題。我有一個普通的UserControl,在標記中有一些控件。在Page_Load這些控件仍然是null。我試圖EnsureChildControls是什麼導致標記控件爲空?

它奠定了這樣的:

母版 - >首頁 - > mycontrol1 - > mycontrol2 - > problemcontrol

ProblemControl是在控制爲空。 MyControl1包含MyControl2。 MyControl2是另一個UserControl,它包含標記中的ProblemControl。主頁沒什麼特別,頁面包含MyControl1的標記。唯一奇怪的是ProblemControl是在Page_Init上動態創建的。

一切工作正常,直到我得到ProblemControl沒有任何控件正在創建。 ProblemControl擁有所有的設置,比如Page和Parent屬性。我沒有看到任何問題。所有這些(除了ProblemControl)的源代碼都非常廣泛,所以我希望有人可以給我一些這個問題的疑難解答提示,如果有人遇到過。

此外,我可以將ProblemControl放置在另一個頁面控件上,它可以很好地工作,它與mycontrol1和/或mycontrol2有關。但是我們從來沒有遇到任何與mycontrol1有關的問題,mycontrol2也沒有任何我可以看到的錯誤。 (過去幾個小時我一直在進行繁瑣的分析)。

有沒有其他人有這個相同的問題?是否有任何常見的事情需要檢查?

更新:

好吧,我會在不久的將來,一個小的測試情況與此一起去複製它。但就目前而言,似乎在Page_Init處動態地從UserControl內部創建UserControl是導致此問題的原因。我可以在ASPX頁面上執行相同的代碼,但是當我在ASCX控件上執行該代碼時,如上所述,它會中斷一切爲空的問題。你不能嵌套UserControls!?

+0

可能的重複http://stackoverflow.com/questions/2275625/asp-net-custom-user-control-to-add-dynamically – Earlz 2010-05-04 15:42:46

回答

0

好吧,我發現了答案:ASP.NET Custom user control to add dynamically(請投票接近重複

接受的答案沒有對我工作最重要的就是用Page.LoadControl("path..")而非Page.LoadControl(typeof(mycontrol),null)後來引起同樣的事情發生,我想他們都會做同樣的事情,但顯然不是。

0

最後的手段調試技術:二進制搜索錯誤。

第1步:創建一個空白控件BlankControl1。代替MyControl1。將MyControl2添加到它。它工作嗎?如果是這樣,問題出在MyControl2(進度!)。否則,問題至少部分與MyControl1有關。我會認爲是這樣。

第2步:從MyControl1中刪除儘可能多的代碼,留下包含MyControl2的代碼。不斷修改它,直到問題消失或變爲BlankControl1。在後一種情況下,有些東西很奇怪,你會想打開一個文件比較工具來找出差異隱藏的地方。

第3步:現在您知道如何解決問題。這可能導致解決方案,或者這會導致如何在不破壞ProblemControl的情況下使用問題誘導代碼的問題。無論哪種方式,你都更接近解決方案。

+0

aw :(我不喜歡這種類型的調試..但我猜我會擁有明天在工作上做... – Earlz 2010-05-04 02:32:33