【发布时间】:2008-10-28 13:14:59
【问题描述】:
在我的页面中,我有以下内容:
<aspe:UpdatePanel runat="server" ID="updatePanel">
<ContentTemplate>
<local:KeywordSelector runat="server" ID="ksKeywords" />
</ContentTemplate>
</aspe:UpdatePanel>
KeywordSelector 控件是我在同一个程序集中定义的控件,local 映射到它的命名空间。
该控件由其他几个控件组成,定义如下:
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="KeywordSelector.ascx.cs"
Inherits="Keywords.KeywordSelector" %>
并且有很多自己的服务器控件,都定义为.designer.cs 文件中的成员。
但是,在控件的生命周期中,它没有任何子控件对象,也不会生成 HTML:
-
.designer.cs文件中定义的所有成员都是null。 - 调用
HasControls返回false。 - 致电
EnsureChildControls什么都不做。 -
Controls集合为空。
删除UpdatePanel 没有好处。我试图用新的UserControl 在干净的页面中重现它,但同样的事情发生了。
我正在使用 ASP.NET over .NET Framework 3.5 SP1 和集成 Web 服务器。
我在这里错过了什么?
更新 #1: 根据 Rob 的评论,我查看了 OnInit 并发现 UserControl 没有检测到它有任何子控件。而且,CreateControlCollection 永远不会被调用!
【问题讨论】:
-
你是否覆盖了 OnInit 并删除了行 base.OnInit(e);发生意外?
-
没有。我也刚刚检查过,它在我的 Page_Load 方法之前被调用,所以没关系,我猜。
-
无赖 - 希望它会是一个简单的:)
-
你是动态加载这个控件吗?
-
不。也阅读这些内容...