ASP.NET UserControl不初始化子控件

前端之家收集整理的这篇文章主要介绍了ASP.NET UserControl不初始化子控件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的页面中,我有以下内容
<aspe:UpdatePanel runat="server" ID="updatePanel">
    <ContentTemplate>
        <local:KeywordSelector runat="server" ID="ksKeywords" />
    </ContentTemplate>
</aspe:UpdatePanel>

KeywordSelector控件是我在同一个程序集中定义的控件,局部映射到其命名空间.

控制由其他几个控件组成,其定义如下:

<%@ Control Language="C#" AutoEventWireup="true"
            CodeBehind="KeywordSelector.ascx.cs"
            Inherits="Keywords.KeywordSelector" %>

并拥有自己的很多服务器控件,它们都定义为.designer.cs文件中的成员.

但是,在控件的生命周期的任何部分,它都有任何子控件对象,也不会产生HTML:

> .designer.cs文件中定义的所有成员都为空.
>对HasControls的调用返回false.
>调用EnsureChildControls什么也不做.
>控件集合为空.

删除UpdatePanel没有什么好处.我试图用一个新的UserControl在一个干净的页面中重现它,同样的事情发生.

我使用.NET Framework 3.5 SP1上的ASP.NET与集成的Web服务器.

我在这里缺少什么?

更新#1:在Rob的评论之后,我调查了OnInit,发现UserControl没有检测到它有任何子控件.此外,CreateControlCollection从不被调用

解决方法

那我发现了这个问题:

>用户控件,而不是自定义控件必须在web.config文件中逐个注册.做这个:

< add tagPrefix =“local”tagName =“KeywordSelector”src =“〜/ KeywordSelector.ascx”/>

代替:

< add tagPrefix =“local”namespace =“关键字”assembly =“关键字”/>
>您不应该将WebControl放在与使用它的控件相同的目录中.这是彻头彻尾的愚蠢. Read about it here.

谢谢您的帮助.现在如果只有我可以把自己的答案标记为答案…

猜你在找的asp.Net相关文章