使用 Dapper 在 ASP.NET Core MVC 中获取下一条/上一条记录
Get next / previous record in ASP.NET Core MVC using Dapper
我正在将列表数据拉入网格,并在“详细信息视图”中逐一查看它们。我正在尝试添加一个 Next/Previous 按钮,让我可以轻松地在列表中的每个项目的详细信息之间导航。
这是我在控制器中使用的代码
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 的不同组合,但没有任何效果。非常感谢任何对此的帮助或见解。
您的代码中有错误
.SkipWhile(i => i.movie_id != i.movie_id)
始终为假,因此您将始终让所有记录减一,而不是一条记录。
我假设你有 movie_id 并且你需要在此之后的下一个更大的 ID,所以试试这个代码
var nextID = _movieRepository.GetAll()
.OrderBy(i => i.movie_id)
.Where(i => i.movie_id > movie_Id )
.Select(i => i.movie_id)
.FirstOrDefault();
此查询将 return 下一个 movie_id 在当前 movie_id
之后
我正在将列表数据拉入网格,并在“详细信息视图”中逐一查看它们。我正在尝试添加一个 Next/Previous 按钮,让我可以轻松地在列表中的每个项目的详细信息之间导航。
这是我在控制器中使用的代码
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 的不同组合,但没有任何效果。非常感谢任何对此的帮助或见解。
您的代码中有错误
.SkipWhile(i => i.movie_id != i.movie_id)
始终为假,因此您将始终让所有记录减一,而不是一条记录。
我假设你有 movie_id 并且你需要在此之后的下一个更大的 ID,所以试试这个代码
var nextID = _movieRepository.GetAll()
.OrderBy(i => i.movie_id)
.Where(i => i.movie_id > movie_Id )
.Select(i => i.movie_id)
.FirstOrDefault();
此查询将 return 下一个 movie_id 在当前 movie_id
之后