加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET UserControl不初始化子控件

发布时间:2020-12-15 23:47:15 所属栏目:asp.Net 来源:网络整理
导读:在我的页面中,我有以下内容: aspe:UpdatePanel runat="server" ID="updatePanel" ContentTemplate local:KeywordSelector runat="server" ID="ksKeywords" / /ContentTemplate/aspe:UpdatePanel KeywordSelector控件是我在同一个程序集中定义的控件,局部映
在我的页面中,我有以下内容:
<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.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读