ASP.NET MVC分页

这个参考了传智播客的视频源码,并且在基础上得到了改进,本人代码写的比较烂,大神轻喷

/// <summary>
        /// 自定义分页控件 ,在@Html上扩展的一个方法
        /// </summary>
        /// <param name="htmlhelper">当前@Html对象</param>
        /// <param name="area">区域名称</param>
        /// <param name="controller">控制器名称</param>
        /// <param name="action">方法名称</param>
        /// <param name="pagesize">每页显示数据的条数</param>
        /// <param name="totalcount">当前分页列表的所有数据总条数</param>
        /// <returns></returns>
        public static MvcHtmlString PageBarBulider(this HtmlHelper htmlhelper, string area, string controller, string action, int pagesize, int totalcount)
        {
            //从url参数pageindex 获取当前的页索引
            string currentpageindex = HttpContext.Current.Request.QueryString["pageindex"];
            int icurrentPi = 1;
            //由于第一次进入某个列表页面是不会带有pageindex和pagesize参数的,所以currentpageindex 有可能为空
            //当为空的时候应该赋值1才正常
            if (string.IsNullOrEmpty(currentpageindex))
            {
                icurrentPi = 1;
            }
            else
            {
                icurrentPi = Convert.ToInt32(currentpageindex);
            }




            //1.0 计算出当前列表总共有多少页数据
            decimal pagecount = Math.Ceiling((totalcount / Convert.ToDecimal(pagesize)));


            //2.0 拼装当前分页控件使用的url
            string areaPix = string.IsNullOrEmpty(area) ? "" : "/" + area;
            string urlfmt = areaPix + "/" + controller + "/" + action + "?pageindex={0}&pagesize={1}";


            StringBuilder html = new StringBuilder(200);
            if (icurrentPi >= 5 && icurrentPi <= pagecount - 4)//根据自己的需求
            {
                html.Append("<div class='col-lg-6 col-lg-offset-5' id='pagebar'><ul class='pagination pagination - sm'>");
                
                html.Append("<li><a href=\"" + string.Format(urlfmt, icurrentPi == 1 ? 1 : icurrentPi - 1, pagesize) + "\">&laquo;</a></li>");
                //获取上一页的链接
                html.Append("<li><a href=\"" + string.Format(urlfmt, 1, pagesize) + "\">" + 1 + "</a></li>");
                //第一页


                html.Append("<li><a href='javascript:void(0)'>...</a></li>");


                html.Append("<li><a href=\"" + string.Format(urlfmt, icurrentPi - 1, pagesize) + "\">" + (icurrentPi - 1) + "</a></li>");
                //当前页的上一页
                html.Append("<li class='active'><a  href=\"" + string.Format(urlfmt, icurrentPi, pagesize) + "\">" + icurrentPi + "</a></li>");
                //当前页
                html.Append("<li ><a href=\"" + string.Format(urlfmt, icurrentPi + 1, pagesize) + "\">" + (icurrentPi + 1) + "</a></li>");
                //当前页的下一页


                html.Append("<li><a href='javascript:void(0)'>...</a></li>");


                html.Append("<li><a href=\"" + string.Format(urlfmt, pagecount, pagesize) + "\">" + pagecount + "</a></li>");
                //最后一页
                html.Append("<li><a href=\"" + string.Format(urlfmt, icurrentPi == 1 ? 1 : icurrentPi + 1, pagesize) + "\">&raquo;</a></li>");
                //获取下一页的链接
                
                html.Append("</ul></div>");
            }
            else if (icurrentPi>pagecount-4&&pagecount>7)
            {
                html.Append("<div class='col-lg-6 col-lg-offset-5' id='pagebar'><ul class='pagination pagination - sm'>");
                html.Append("<li><a href=\"" + string.Format(urlfmt, icurrentPi == 1 ? 1 : icurrentPi - 1, pagesize) + "\">&laquo;</a></li>");
                //获取上一页的链接
                html.Append("<li><a href=\"" + string.Format(urlfmt, 1, pagesize) + "\">" + 1 + "</a></li>");
                //第一页
                html.Append("<li class='disabled'><a href='javascript:void(0)'>...</a></li>");


                for (int i = 5; i >= 0; i--)
                {
                    if (icurrentPi == (pagecount - i))
                    {
                        html.Append("<li class='active'><a href=\"" + string.Format(urlfmt, pagecount - i, pagesize) + "\">" + (pagecount - i) + "</a></li>");
                    }
                    else
                    {
                        html.Append("<li><a href=\"" + string.Format(urlfmt, pagecount - i, pagesize) + "\">" + (pagecount - i) + "</a></li>");
                    }
                }
                html.Append("<li><a href=\"" + string.Format(urlfmt, icurrentPi == 1 ? 1 : icurrentPi + 1, pagesize) + "\">&raquo;</a></li>");
                //获取下一页的链接
               
                html.Append("</ul></div>");
            }
            //页面第一次请求的时候,执行最初的代码
            else
            {
             
                html.Append("<div class='col-lg-6 col-lg-offset-5' id='pagebar'><ul class='pagination pagination - sm'>");
                html.Append("<li ><a href=\"" + string.Format(urlfmt, icurrentPi == 1 ? 1 : icurrentPi - 1, pagesize) + "\">&laquo;</a></li>");
                if (pagecount > 7)
                {
                    for (int i = 1; i < 6; i++)
                    {
                        if (icurrentPi == i)
                        {
                            html.Append("<li class='active'><a href=\"" + string.Format(urlfmt, i, pagesize) + "\">" + i + "</a></li>");
                        }
                        else
                        {
                            html.Append("<li><a href=\"" + string.Format(urlfmt, i, pagesize) + "\">" + i + "</a></li>");
                        }
                    }
                    html.Append("<li><a href='javascript:void(0)'>...</a></li>");
                }
                else
                {
                    for (int i = 1; i <= pagecount - 1; i++)
                    {
                        html.Append("<li><a href=\"" + string.Format(urlfmt, i, pagesize) + "\">" + i + "</a></li>");
                    }
                }
                html.Append("<li><a href=\"" + string.Format(urlfmt, pagecount, pagesize) + "\">" + pagecount + "</a></li>");
                html.Append("<li><a href=\"" + string.Format(urlfmt, icurrentPi == pagecount ? pagecount : icurrentPi + 1, pagesize) + "\">&raquo;</a></li>");
                
                html.Append("</ul></div>");
            }


            return new MvcHtmlString(html.ToString());
        }


控制器里面的代码

public ActionResult index()
        {
            string pageIndex = Request.QueryString["pageindex"];
            string pagesize = Request.QueryString["pagesize"];
            int ipageIndex = 1;
            int ipageSize = 5;
            if (!int.TryParse(pageIndex, out ipageIndex)){
                ipageIndex = 1;
            }
            else if (!int.TryParse(pagesize, out ipageSize))
            {
                ipageSize = 5;
            }
            OnlineBorrowEntities db = new OnlineBorrowEntities();
            int skip = (ipageIndex-1) * ipageSize;
            var list = db.UseableInfo.OrderBy(c=>c.id).Skip(skip).Take(ipageSize).ToList();
            ViewData["aviliableRoomInfo"] = list;
            return View();
        }


前端验证

window.onloaf=function()

{

var oDiv = document.getElementById('pagebar');
                var oUl = oDiv.getElementsByTagName('ul')[0];
                var aLi = oUl.getElementsByTagName('li');
                if (aLi[1].getAttribute('class') == 'active')
                {
                    var A = aLi[0].getElementsByTagName('a')[0];
                    A.setAttribute('href', 'javascript:void(0)');
                }
                else if (aLi[aLi.length - 2].getAttribute('class') == 'active')
                {
                    var A = aLi[aLi.length-1].getElementsByTagName('a')[0];
                    A.setAttribute('href', 'javascript:void(0)');
                }

}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值