在我的页面内,我有以下内容:
<aspe:UpdatePanel runat="server" ID="updatePanel">
<ContentTemplate>
<local:KeywordSelector runat="server" ID="ksKeywords" />
</ContentTemplate>
</aspe:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
该KeywordSelector控制是我在相同组件限定和控制local被映射到它的命名空间.
控件由其他几个控件组成,定义如下:
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="KeywordSelector.ascx.cs"
Inherits="Keywords.KeywordSelector" %>
Run Code Online (Sandbox Code Playgroud)
并且有很多自己的服务器控件,都被定义为.designer.cs文件中的成员.
但是,在控件生命周期的任何部分都没有任何子控件对象,也不会生成HTML:
.designer.cs文件中定义的所有成员都是null.HasControls退货false.EnsureChildControls什么都不做.Controls集合是空的.删除UpdatePanel没有好处.我尝试在一个干净的页面中重现它与新UserControl的相同的事情发生.
我在.NET Framework 3.5 SP1上使用ASP.NET和集成的Web服务器.
我在这里错过了什么?
更新#1:在Rob的评论之后,我调查OnInit并发现UserControl它没有检测到它有任何子控件.而且,CreateControlCollection从来没有被称为!
Ome*_*ten 24
好吧,我发现了问题:
用户控制,而不是自定义控件必须注册一个接一个在web.config中的文件.做这个:
<add tagPrefix="local" tagName="KeywordSelector" src="~/KeywordSelector.ascx" />
代替:
<add tagPrefix="local" namespace="Keywords" assembly="Keywords" />
永远不要将a WebControl放在与Control使用它相同的目录中.这是彻头彻尾的愚蠢.在这里阅读它.
谢谢您的帮助.现在,如果我能记住我自己的答案是对的答案...
| 归档时间: |
|
| 查看次数: |
9368 次 |
| 最近记录: |