分层数据的递归函数

时间:2010-10-30 12:23:08

标签: asp.net asp.net-mvc-2

我的模特

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);
        }
    }
}

}

调用procudure

 List<page> myPages = null;

 WebsiteModels.getPagesForPage(0, db,myPages);

我收到错误

System.NullReferenceException未被用户代码处理   Message =对象引用未设置为对象的实例。

在线“myPages.Add(item);”

我不明白错误......

2 个答案:

答案 0 :(得分:0)

您将myPages设置为null,然后再将其传递给WebsiteModels.getPagesForPage()。因此,循环中对myPages.Add(item);的调用会引发NullReferenceException,因为您无法在null对象上调用方法。

你可能想要:

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

答案 1 :(得分:0)

好吧,“myPages”为空,因此调用一个方法会导致NullReferenceException。你应该写

myPages = new List<page>();