gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:15 25 4
gpt4 key购买 nike

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

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

<div id="navbar" class="navbar-collapse collapse">
@RenderSection("NavigationBar", false)
</div>

在 View 中有一个部分调用了渲染导航栏的 Action Index.cshtml

@section NavigationBar{
@{Html.Action("Menu", "Page");}
}

PageController 操作“Menu”如下所示

[ChildActionOnly]
public ActionResult Menu()
{
var pagesQuery = new MyMVC.BLL.GetPagesQuery();
var pages = pagesQuery.GetPages();
return PartialView("_Navigation", pages);
}

pagesQuery 很简单:

public IEnumerable<PageContent> GetPages()
{
_context = _context ?? new dbEntities();
return _context.PageContents.Where(t => t.PageActive == true && t.ParentPageId != null)
.OrderBy(t => t.PageOrder);
}

_Navigation 部分 View 是:

@model IEnumerable<MyMVC.DAL.PageContent>

@BuildMenu(Model)

@helper BuildMenu(IEnumerable<MyMVC.DAL.PageContent> data, int? parentid = null)
{
var nodes = from n in data where n.ParentPageId == parentid select n;
if (nodes.Any()) {
foreach (var node in nodes.OrderBy(n => n.PageOrder)) {
@node.PageTitle
@BuildMenu(data, node.PageId);
}
}
}

当我在 LinqPad 中运行以下 linq 代码(与上面的 var nodes 行相同)时,我得到了正确的结果和 7 个顶级项目。

int? x = null;
var y = from n in PageContents where n.ParentPageId == x select n;
foreach (var title in y){
Console.Write (title.PageTitle + "|");
}

部分中的同一行(上面的粗体)不返回任何结果。我确信答案真的很简单,但我已经为此奋斗了几天,这让我很烦恼。

一些帮助将不胜感激。

最佳答案

GetPages 方法中的条件为 t.ParentPageId != null:

return _context.PageContents
.Where(t => t.PageActive == true && t.ParentPageId != null)
.OrderBy(t => t.PageOrder);

然后您的分部 View 将调用 BuildMenu 帮助程序,最初没有 parentId,因此将使用其默认值 null:

@BuildMenu(Model)

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

这意味着帮助程序中的 nodes 查询结果将不返回任何结果。

关于c# - .NET MVC4 中的递归 IEnumerable 菜单不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com