.NET MVC和EF实现分页
控制器
public ActionResult Index(string Name = "", int pageIndex1 = 1, int pageSize1 = 10)
{
var totalRows = db.Roles
.Where(p => Name == "" || p.Name.Contains(Name))
.Count();
var pageCount1 = Math.Ceiling(totalRows* 1.00 / pageSize1);
var roles = db.Roles
.Where(p => Name == "" || p.Name.Contains(Name)).ToList();
var rows = db.Roles.Where(p => p.Name.Contains(name))
.OrderBy(p => p.ID)
.Skip(pageSize * (pageIndex - 1))//跳过
.Take(pageSize)//取
.ToList();//转化为集合
ViewBag.rows= rows;
ViewBag.pageIndex1 = pageIndex1;
ViewBag.pageSize1 = pageSize1;
ViewBag.pageCount1 = pageCount1;
ViewBag.totalRows= totalRows;
ViewBag.Name = Name;
return View(roles);
}
页面
nav class="d-flex justify-content-between">
<ul class="pagination">
<li class="page-item">总共<label>@ViewBag.totalRows1</label>条记录</li>
<li class="page-item">
<select onchange="window.location = this.value;">
@{
var pageSizes = new int[5] { 5, 10, 20, 50, 100 };
foreach (var i in pageSizes)
{
if (i == ViewBag.pageSize1)
{
<option selected="selected" value="/Role/Index?name=@ViewBag.Name&pageindex1=@(ViewBag.pageIndex1)&pageSize1=@i">@i</option>
}
else
{
<option value="/Role/Index?name=@ViewBag.Name&pageindex1=@(ViewBag.pageIndex1)&pageSize1=@i">@i</option>
}
}
}}
/select>
</li>
</ul>
<ul class="pagination">
<li class="page-item">
<a class="page-link" href="/Role/Index?name=@ViewBag.Name&pageindex=1&pageSize=@ViewBag.pageSize1">首页</a>
</li>
@if (ViewBag.pageIndex1 > 1)
{
<li class="page-item">
<a class="page-link" href="/Role/Index?name=@ViewBag.Name&pageindex=@(ViewBag.pageIndex1 - 1)&pageSize=@ViewBag.pageSize1">上一页</a>
</li>
}
else
{
<li class="page-item disabled">
<a class="page-link" href="/Role/Index?name=@ViewBag.Name&pageindex=@(ViewBag.pageIndex1 - 1)&pageSize=@ViewBag.pageSize1">上一页</a>
</li>
}
<li class="page-item">
<a class="page-link" href="">@ViewBag.pageIndex1</a>
</li>
@if (ViewBag.pageIndex1 < (ViewBag.pageCount))
{
<li class="page-item">
<a class="page-link" href="/Role/Index?name=@ViewBag.Name&pageindex=@(ViewBag.pageIndex1 + 1)&pageSize=@ViewBag.pageSize1">下一页</a>
</li>
}
else
{
<li class="page-item disabled">
<a class="page-link" href="/Role/Index?name=@ViewBag.Name&pageindex=@(ViewBag.pageIndex1+1)&pageSize=@ViewBag.pageSize1">下一页</a>
</li>
}
<li class="page-item">
<a class="page-link" href="/Role/Index?name=@ViewBag.Name&pageindex=@ViewBag.pageCount1&pageSize=@ViewBag.pageSize1">末页</a>
</li>
<li class="page-item">
<input type="button" id="btnGo" value="Go" class="page-link" />
</li>
</ul>
</nav>