2010-05-18 2 views
3

У меня есть простой пользовательский элемент управления ASP.NET. Это выглядит следующим образом:Добавление пользовательского элемента управления ASP.NET для управления динамически

<%@ 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'

Я не уверен, что вызывает это сообщение об ошибке или как его исправить. Я бы подумал, что не должно быть проблемы. Я попытался создать конструктор для моего веб-пользователя, чтобы он дал значения по умолчанию для моих свойств, но это не сработало. Любая идея, как сделать эту работу? Не похоже, что это должно быть так, что

ответ

4

Чтобы программно запрограммировать управление, вам необходимо использовать метод Page.LoadControl(). См this MSDN статья

+0

Это была просто ошибка вызванный тем, что я очищаю некоторые данные, чтобы задать вопрос. Это не вызвало проблемы. –

+0

@RandomBen, приведенный выше комментарий относится к моему сообщению или вы добавили его по ошибке. Ответ, который я вам дал, скорее всего, причина проблемы. Метод LoadControl создает элементы управления, которые находятся в разметке usercontrol, если вы не использовали его до установки свойства, литеральный элемент управления в разметке еще не был создан, что даст вам исключение с нулевой ссылкой –

+0

Это было связано с сообщением Маркуса. Моя ошибка, извините! –

-1

У вас есть опечатка в коде, который вы написали. «ацикл» вместо «статьи».

+0

Он даже не может скомпилировать с опечаткой :( –

+0

Это было просто ошибка вызвана мной очистки некоторых данных, чтобы сделать этот вопрос. Это не вызывает проблему. –

Смежные вопросы