代码之家  ›  专栏  ›  技术社区  ›  Ben Hoffman

动态向控件添加ASP.NET Web用户控件

  •  3
  • Ben Hoffman  · 技术社区  · 15 年前

    我有一个简单的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);
    }
    

    每次运行此代码时,都会正确填充新闻查询,并转到该行 aticle.bodyText = news.Body; 然后我收到了错误 article.bodyText threw an exception of type 'System.NullReferenceException'

    我不确定是什么导致了这个错误消息,也不知道如何修复它。我认为不应该有什么问题。我尝试为我的Web用户控件创建一个构造函数,以便它为我的属性提供默认值,但这不起作用。知道怎么做吗?看起来不应该是那样的

    2 回复  |  直到 15 年前
        1
  •  4
  •   Coding Flow    15 年前

    要以编程方式加载控件,需要使用page.load control()方法。见 this MSDN文章

        2
  •  -1
  •   marcusstarnes    15 年前

    你写的代码中有错别字。“aticle”而不是“article”。

    推荐文章