2009-06-22 52 views
3

我創建了一個內部使用ITemplate的控件,以允許用戶添加自己的東西。ASP.net Page object null從模板化控件中調用它時

<my:MyControl id="myControl" runat="server"> 
    <Content> 
     //some stuff in here 
    </Content> 
</my:MyControl> 

「內容」屬性是模板。 (這只是簡化的,這個結構在更大的控制範圍內)。

現在我遇到了問題,我的用戶將他自己的UserControl放置在<Content>..</Content>內。這應該不是問題,但UserControl會調用PageLoad事件中的頁面的QueryString。現在我認識到,當UserControl駐留在模板中時,Page對象是空的,而當它放在外面時,它通常在頁面上工作。

有沒有人有一個想法這裏可能是什麼問題?

回答

9

我已經看到this.Page從嵌套用戶控件中返回null的情況。

在這種情況下,使用構造(Page)HttpContext.Current.Handler來使頁面對象正常工作。

+0

Thx您的帖子。問題在於對頁面對象的調用是在某些使用我的控件的開發人員可能編寫的用戶控件中完成的。所以我無法控制... – Juri 2009-06-22 12:45:58

1

我不知道這是否是有什麼用途了,但也許它還是有些用處...

當你實例化模板(與InstantiateIn),實際上是添加到您的MyControl的所產生的控制層級Controls集合? AFAIK,這是確保你有一個非空頁屬性的方式。