C# .NET MVC4中的递归IEnumerable菜单不返回任何结果

C# .NET MVC4中的递归IEnumerable菜单不返回任何结果,c#,linq,asp.net-mvc-4,recursion,entity-framework-6,C#,Linq,Asp.net Mvc 4,Recursion,Entity Framework 6,我试图使用递归帮助器返回应用程序中的嵌套页面列表。但是,我在IEnumerable中没有得到任何结果,因此nodes.Any()为空 html的共享布局页面和调用导航栏部分的部分 \u布局 <div id="navbar" class="navbar-collapse collapse"> @RenderSection("NavigationBar", false) </div> 页面控制器的动作“菜单”如下所示 [ChildActionOnly] public

我试图使用递归帮助器返回应用程序中的嵌套页面列表。但是,我在IEnumerable中没有得到任何结果,因此nodes.Any()为空

html的共享布局页面和调用导航栏部分的部分 \u布局

<div id="navbar" class="navbar-collapse collapse">
    @RenderSection("NavigationBar", false)
</div>
页面控制器的动作“菜单”如下所示

[ChildActionOnly]
public ActionResult Menu()
{
    var pagesQuery = new MyMVC.BLL.GetPagesQuery();
    var pages = pagesQuery.GetPages();
    return PartialView("_Navigation", pages);
}
页面查询只是:

public IEnumerable<PageContent> GetPages()
{
    _context = _context ?? new dbEntities();
    return _context.PageContents.Where(t => t.PageActive == true && t.ParentPageId != null)
            .OrderBy(t => t.PageOrder);
}
分部中的同一行(上面粗体显示)不返回任何结果。我相信答案很简单,但我已经为此奋斗了几天,这让我很烦恼


非常感谢您的帮助。

您的
GetPages
方法中的条件为
t.ParentPageId!=空

return _context.PageContents
               .Where(t => t.PageActive == true && t.ParentPageId != null)
               .OrderBy(t => t.PageOrder);
然后,您的局部视图最初将调用
BuildMenu
帮助程序,而不使用parentId,因此将使用其默认值
null

@BuildMenu(Model)

@helper BuildMenu(IEnumerable<MyMVC.DAL.PageContent> data, int? parentid = null)
{
    ...
}
@BuildMenu(型号)
@助手构建菜单(IEnumerable数据,int?parentid=null)
{
...
}

这意味着助手中的
节点
查询结果将不返回任何结果。

您的
GetPages
方法中的条件具有
t.ParentPageId!=空
。这是否意味着第一次调用
@BuildMenu(Model)
将找不到节点,因为parentId将为null?@DanielJ.G。自由流。我今晚就试试看。这看起来确实是个问题。你能不能把那条评论记下来作为答案,这样我就可以把它作为问题的答案。谢谢,这正是我认为我犯的愚蠢的错误!我还有一个问题,@node.PageTitle或foreach语句中的任何内容没有显示,但我确信这是另一个小学生的错误!
int? x = null;
var y = from n in PageContents where n.ParentPageId == x select n;
foreach (var title in y){
    Console.Write (title.PageTitle + "|");  
}
return _context.PageContents
               .Where(t => t.PageActive == true && t.ParentPageId != null)
               .OrderBy(t => t.PageOrder);
@BuildMenu(Model)

@helper BuildMenu(IEnumerable<MyMVC.DAL.PageContent> data, int? parentid = null)
{
    ...
}