2010-05-18 5 views
3

J'ai un contrôle utilisateur Web ASP.NET simple. Il ressemble à ceci:Ajout d'un contrôle utilisateur Web ASP.NET à un contrôle de manière dynamique

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

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

Mon code ressemble derrière comme ceci:

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

Sur une page .aspx je <asp:Panel ID="pNews" runat="server" />

Dans le code derrière je:

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

    pNews.Controls.Add(article); 
} 

Chaque fois que j'exécute ce code, le newsQuery est rempli correctement et j'arrive à la ligne aticle.bodyText = news.Body; puis j'ai reçu l'erreur article.bodyText threw an exception of type 'System.NullReferenceException'

Je ne suis pas sûr de ce qui cause ce message d'erreur ou comment le réparer. Je pense qu'il ne devrait pas y avoir de problème. J'ai essayé de créer un constructeur pour mon contrôle utilisateur Web afin qu'il donne des valeurs par défaut à mes propriétés, mais cela n'a pas fonctionné. Une idée de comment faire ce travail? Il ne semble pas qu'il devrait être que

Répondre

4

Pour charger un contrôle par programmation, vous devez utiliser la méthode Page.LoadControl(). Voir this MSDN article

+0

qui était juste une erreur causé par moi en nettoyant certaines données pour faire la question.Cela n'a pas causé le problème –

+0

@RandomBen, est-ce que le commentaire ci-dessus se rapportent à mon poste ou l'avez-vous ajouté par erreur.La réponse que je vous ai donné est probablement la La méthode LoadControl instancie les contrôles qui sont dans le balisage de la commande usercontrol, si vous ne l'avez pas utilisée avant de définir la propriété, le contrôle littéral du balisage n'a pas encore été instancié ce qui vous donnera l'exception de référence null –

+0

C'était en rapport avec le message de Marcus, mon erreur, désolé! –

-1

Vous avez une faute de frappe dans le code que vous avez écrit. «aticle» au lieu de «article».

+0

Il ne peut même pas compiler avec la faute de frappe :( –

+0

qui était juste une erreur causée par me nettoyer des données pour faire de la question. Cela ne provoque pas le problème. –

Questions connexes