У меня есть простой пользовательский элемент управления 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'
Я не уверен, что вызывает это сообщение об ошибке или как его исправить. Я бы подумал, что не должно быть проблемы. Я попытался создать конструктор для моего веб-пользователя, чтобы он дал значения по умолчанию для моих свойств, но это не сработало. Любая идея, как сделать эту работу? Не похоже, что это должно быть так, что
Это была просто ошибка вызванный тем, что я очищаю некоторые данные, чтобы задать вопрос. Это не вызвало проблемы. –
@RandomBen, приведенный выше комментарий относится к моему сообщению или вы добавили его по ошибке. Ответ, который я вам дал, скорее всего, причина проблемы. Метод LoadControl создает элементы управления, которые находятся в разметке usercontrol, если вы не использовали его до установки свойства, литеральный элемент управления в разметке еще не был создан, что даст вам исключение с нулевой ссылкой –
Это было связано с сообщением Маркуса. Моя ошибка, извините! –