动态地将ASP.NET Web用户控件添加到控件

时间:2010-05-18 13:39:10

标签: c# asp.net-3.5

我有一个简单的ASP.NET Web用户控件。它看起来像这样:

<%@ Control Language="C#" AutoEventWireup="true" 
    CodeBehind="NewsArticle.ascx.cs" 
    Inherits="Website.Controls.NewsArticle" %>

<div>
    <asp:Literal ID="ltlBody" runat="server" />
</div>

我的代码背后是这样的:

namespace Website.Controls
{
    public partial class NewsArticle : System.Web.UI.UserControl
    {
        public String bodyText
        {
            //get { return ltlBody.Text; }
            set { ltlBody.Text = value; }
        }
    }
}

在.aspx页面上我有<asp:Panel ID="pNews" runat="server" />

在我背后的代码中:

foreach (vwNews news in newsQuery)
{
    NewsArticle article = new NewsArticle();
    article.bodyText = news.Body;

    pNews.Controls.Add(article);
}

每次运行此代码时,都会正确填充newsQuery,然后我就开始了 aticle.bodyText = news.Body;然后我收到了错误article.bodyText threw an exception of type 'System.NullReferenceException'

我不确定导致此错误消息的原因或解决方法。我认为应该没有问题。我尝试为我的Web用户控件创建一个构造函数,以便它为我的属性提供默认值,但这不起作用。知道如何使这项工作?它似乎不应该是

2 个答案:

答案 0 :(得分:4)

要以编程方式加载控件,您需要使用Page.Load Control()方法。请参阅this MSDN文章

答案 1 :(得分:-1)

您编写的代码中有拼写错误。 'aticle'而不是'article'。