.net core 分页怎么写
时间: 2023-07-31 18:13:25 浏览: 53
在 .NET Core 中进行分页,一般可以使用 LINQ 的 `Skip` 和 `Take` 方法,以及自定义的分页类来实现。以下是一个简单的分页示例:
首先,创建一个名为 `PagingInfo` 的分页类,用于存储分页相关信息:
```csharp
public class PagingInfo
{
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int CurrentPage { get; set; }
public int TotalPages => (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage);
}
```
然后,在需要进行分页的控制器中,通过 LINQ 查询获取数据,并使用 `Skip` 和 `Take` 方法进行分页:
```csharp
public IActionResult Index(int page = 1)
{
int pageSize = 10; //每页显示的记录数
var data = _dbContext.Users.Skip((page - 1) * pageSize).Take(pageSize).ToList();
var pagingInfo = new PagingInfo
{
TotalItems = _dbContext.Users.Count(),
ItemsPerPage = pageSize,
CurrentPage = page
};
return View(new UsersViewModel { Users = data, PagingInfo = pagingInfo });
}
```
最后,在视图中显示分页导航:
```html
<div class="pagination">
<ul>
@if (Model.PagingInfo.CurrentPage > 1)
{
<li><a href="?page=@(Model.PagingInfo.CurrentPage - 1)">上一页</a></li>
}
@for (int i = 1; i <= Model.PagingInfo.TotalPages; i++)
{
<li @(i == Model.PagingInfo.CurrentPage ? "class=active" : "")><a href="?page=@i">@i</a></li>
}
@if (Model.PagingInfo.CurrentPage < Model.PagingInfo.TotalPages)
{
<li><a href="?page=@(Model.PagingInfo.CurrentPage + 1)">下一页</a></li>
}
</ul>
</div>
```
这样,就可以实现简单的分页功能了。当然,还可以根据具体需求进行优化和扩展。