ASP.NET中如何使用EF框架+MVC进行分页操作

使用EF框架和MVC进行分页的好处

方便快捷,代码量少。

案例演示

话不多说,直接上效果图
在这里插入图片描述
我们以Roles表为例,先看看表里的数据
在这里插入图片描述
控制器代码:

public ActionResult Index(int pageIndex=1,int pageSize=10,string name="")
        {
            //获取总记录数
            var totalRows = db.Roles.Count();
            //计算总页数
            var totalPages = Math.Ceiling(totalRows * 1.00 / pageSize);
            ViewBag.totalPages = totalPages;

            var roles = db.Roles.Where(p=>p.Name.Contains(name))
                .OrderBy(p=>p.ID)  //排序
                .Skip((pageIndex-1) * pageSize)    //跳过
                .Take(pageSize)   //取
                .ToList();
            ViewBag.pageIndex = pageIndex;
            ViewBag.name = name;
            ViewBag.pageSize = pageSize;
            return View(roles);
        }

视图代码:

@{
    ViewBag.Title = "Index";
}

<h2>角色列表</h2>
<div class="input-group">
    <label>名称:</label>
    <input type="text" class="form-control" id="txtCondName" value="@ViewBag.name"/>
    <input type="button" id="btnSearch" value="搜索" οnclick="page(1);" />
</div>
<table class="table table-bordered">
    <thead>
        <tr>
            <th>编号</th>
            <th>名称</th>
            <th>备注</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <th>@item.ID</th>
                <th>@item.Name</th>
                <th>@item.Remark</th>
            </tr>
        }
    </tbody>

</table>

<nav aria-label="...">
    <ul class="pagination">
        <li class="page-item ">
            共 @ViewBag.totalPages 页,第
            <input type="number" min="1" max="@ViewBag.totalPages" id="pageIndex" value="@ViewBag.pageIndex" />
            页,每页显示          
            <select id="pageSize" οnchange="page(1);">
                @{
                    var listPageSize = new List<int> { 5, 10, 20, 50, 100 };
                }
                @foreach (var item in listPageSize)
                {
                    if (@ViewBag.pageSize == @item)
                    {
                        <option value="@item" selected="selected">@item</option>
                    }
                    else
                    {
                        <option value="@item">@item</option>
                    }
                }
            </select>
            条
        </li>
    </ul>
    <ul class="pagination">
        <li class="page-item ">
            <a class="page-link" href="javascript:page(1);" tabindex="-1" aria-disabled="true">首页</a>
        </li>
        @if (@ViewBag.pageIndex > 1)
        {
            <li class="page-item"><a class="page-link" href="javascript:page(@ViewBag.pageIndex-1);">上页</a></li>
        }
        else
        {
            <li class="page-item disabled"><a class="page-link" href="javascript:page(@ViewBag.pageIndex-1);">上页</a></li>
        }


        <li class="page-item " aria-current="page">
            <span class="page-link"> @ViewBag.pageIndex</span>
        </li>

        @if (@ViewBag.pageIndex < @ViewBag.totalPages)
        {
            <li class="page-item " aria-current="page">
                <a class="page-link" href="javascript:page(@ViewBag.pageIndex+1);">下页 </a>
            </li>
        }
        else
        {
            <li class="page-item disabled" aria-current="page">
                <a class="page-link" href="javascript:page(@ViewBag.pageIndex+1);">下页 </a>
            </li>
        }

        <li class="page-item">
            <a class="page-link" href="javascript:page(@ViewBag.totalPages);">末页</a>
        </li>
        <li class="page-item">
            <input type="button" class="page-link" value="GO" οnclick="go()" />
        </li>
    </ul>
</nav>

@section scripts{
    <script>
        function page(pageIndex) {
            var name = $("#txtCondName").val(); //获取搜索框的值
            var pageSize = $("#pageSize").val(); //获取下拉框的值
            window.location.href = "/role/index?pageindex=" + pageIndex
                + "&pageSize=" + pageSize + "&name=" + name;
        }
        function go() {
            //获取输入的页码的值
            var pageIndex = $("#pageIndex").val();
            page(pageIndex);
        }
    </script>
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值