C# 中继器不创建子控件

C# 中继器不创建子控件,c#,asp.net,C#,Asp.net,我试图找出为什么DataBind()确实在中继器上触发数据绑定事件,但没有注入子控件(位于其ItemTemplate标记内的子控件) <asp:Repeater ID="rptMessages" runat="server"> <asp:ItemTemplate> <VallisLive2:NotificationWidget ID="ctlNotification" runat="server

我试图找出为什么DataBind()确实在中继器上触发数据绑定事件,但没有注入子控件(位于其ItemTemplate标记内的子控件)

        <asp:Repeater ID="rptMessages" runat="server">
            <asp:ItemTemplate>
                <VallisLive2:NotificationWidget ID="ctlNotification" runat="server"
                    NotificationID='<%# Eval("NotificationID") %>'
                    Title='<%# Eval("Title") %>'
                    Details='<%# Eval("Details") %>'
                    CreatedDateTime='<%# Eval("CreatedDateTime") %>'
                    Importance='<%# Eval("Importance") %>' />
            </asp:ItemTemplate>
        </asp:Repeater>

失败原因:System.NullReferenceException:“对象引用未设置为对象的实例。” 控件为空。它无法在中继器中找到控件,因为它试图绑定它,因为它没有被创建

因此DataBind()可以工作,它激发,它有有效的源数据,但最终结果是中继器的输出为空,以上证明中继器没有创建子控件


非常感谢您的任何想法:)

昨天显然过得不好。答案是声明,而不是在中继器内

很明显昨天过得不好。答案是声明而不是在Repeater.Load_事件中描述数据,例如con.Open();rptmessage.DataSource=cmd.ExecuteReader();rptmessage.DataBind();con.Close();
                <asp:Repeater ID="rptMessages" runat="server" OnItemDataBound="rptMessages_ItemDataBound">


        protected void rptMessages_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item ||
                e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var n = e.Item.DataItem as Notification;

                var control = e.Item.FindControl("ctlNotification") as NotificationWidget;