【发布时间】:2022-01-12 23:17:46
【问题描述】:
我将列表数据拉入网格,并在“详细视图”中逐一查看它们。我正在尝试添加一个“下一个/上一个”按钮,让我可以轻松地在列表中每个项目的详细信息之间导航。
这是我在控制器中使用的代码
var nextID = _movieRepository.GetAll()
.OrderBy(i => i.movie_id)
.SkipWhile(i => i.movie_id != i.movie_id)
.Skip(1)
.Select(i => i.movie_id);
ViewBag.NextID = nextID;
在我的断点内,它只返回“nextID = NULL”,这意味着它不会在我的 URL 末尾生成适当的下一个记录 ID。注意:我在我的控制器中使用 Linq 命名空间,但我没有使用 EF。这是我认为的简单代码。
<a href="/@ViewData["Controller"]/@ViewData["Action"]/@ViewBag.nextID"> Next Movie </a>
我一直在谷歌搜索,尝试不同的方法,不同的 Skip/SkipWhile/Select/FirstOrDefault 组合,但没有任何效果。非常感谢您对此提供任何帮助或见解。
【问题讨论】:
-
如果您通过movie_id 订购,则可以仅使用where 和first 或default 检索传递的id 之后的下一个。我错过了什么吗?
-
不清楚您到底需要什么帮助:LINQ 表达式、通过
ViewData和ViewBag生成URL,还是其他?您期望从 LINQ 语句返回什么? -
我没有在我的 ViewBag 中使用上面指定的 Linq 表达式获取任何值来检索“下一步”按钮的下一条记录。
-
经过一番摆弄,我可以让它仍然返回“NULL”,或者它返回我的记录的全部详细信息 - 而不是简单的记录 ID。
标签: c# linq .net-core entity-framework-core asp.net-core-mvc