3

我创建了一个在内部使用 ITemplate 的控件,以允许用户添加自己的内容。

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

“内容”属性是模板。(这只是简化了。这个结构在一个更大的控制范围内)。

现在我遇到了我的用户将他自己的 UserControl 放在<Content>..</Content>. 这应该不是问题,但是 UserControl 在 PageLoad 事件中调用页面的 QueryString。现在我认识到,当 UserControl 驻留在模板中时,Page 对象为 null,而如果它放置在外部,则它可以正常工作,就像通常在页面上一样。

有谁知道这里可能是什么问题?

4

2 回答 2

9

我见过this.Page从嵌套用户控件中返回 null 的情况。

在这种情况下,使用构造(Page)HttpContext.Current.Handler来获取页面对象可以正常工作。

于 2009-06-22T12:41:11.323 回答
1

我不知道它是否有任何用处,但也许它仍然有点用......

当您实例化模板(使用InstantiateIn)时,生成的控件层次结构实际上是否添加到 MyControl 的Controls集合中?AFAIK,这是确保您拥有非空 Page 属性的方法。

于 2009-09-04T23:18:24.123 回答