2010-10-30 4 views
0

mon modèlefonction récursive pour les données hiérarchiquement

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace amief.Models 
{ 
    public class WebsiteModels 
{ 
    public static void getPagesForPage(int pageId, dbDataContext db, List<page> myPages) 
    { 

     var pages = (from p in db.pages 
          where p.pageParent == pageId 
          select p); 
     foreach (var item in pages) 
     { 
      myPages.Add(item); 
      getPagesForPage(item.pageId, db, myPages); 
     } 
    } 
} 

} 

appeler le procudure

List<page> myPages = null; 

WebsiteModels.getPagesForPage(0, db,myPages); 

je reçois une erreur

System.NullReferenceException était non gérée par le code utilisateur message = référence d'objet pas défini sur une instance d'un objet.

sur la ligne "myPages.Add (item);"

Je ne comprends pas l'erreur ...

Répondre

0

Vous myPages à la mise en null avant de passer à WebsiteModels.getPagesForPage(). Par conséquent, les appels à myPages.Add(item); dans votre boucle déclenchent un NullReferenceException parce que vous ne pouvez pas appeler une méthode sur un objet null.

Vous voulez probablement:

List<page> myPages = new List<page>(); 
WebsiteModels.getPagesForPage(0, db, myPages); 
+0

lorsque je supprime = null. Je reçois une autre erreur: Erreur Utilisation de la variable locale non affectée 'myPages' – eyalb

+0

Ne supprimez pas '= null', cela ne fait que rendre votre variable' non assignée' (mais toujours 'null'). Au lieu de cela, instancier une nouvelle liste de pages comme décrit ci-dessus. –

0

Eh bien, "myPages" est nulle, donc appeler une méthode sur elle i résulte un NullReferenceException. Vous devriez plutôt écrire

myPages = new List<page>(); 
Questions connexes