簡體   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