c# - 将 ASP.NET Web 用户控件动态添加到控件

标签 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 用户控件创建一个构造函数,以便它可以为我的属性提供默认值,但这没有用。知道如何使这项工作吗?好像不应该是这样

最佳答案

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

关于c# - 将 ASP.NET Web 用户控件动态添加到控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2857754/

相关文章:

c# - 64 位机器上的 32 位 Java 可访问性

c# - HttpWebRequest 收到 "WebException: The request timed out"

c# - 交付静态哈希表的最佳方式 c#

c# - 列表框内的复选框

javascript - "Please wait"使用 ASP.NET 3.5 的每个用户操作的图像

c# - 正则表达式问题和 c#

c# - 内联代码执行完成后是否将[写入其中的]方法保留在内存中?

asp.net-3.5 - 有没有办法在 WebForms 中呈现部分 View ?

javascript - 自定义 JavaScriptConverter 类

sql - 合并多对多关系连接中的列值