页码条--字符串拼接--重写HtmlHelper

本文介绍了一个ASP.NET中用于生成分页导航的组件实现,该组件能够根据当前页、页面大小和总页数动态生成HTML分页链接,支持上一页、下一页以及页码跳转等功能。

  public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int pageCount)
        {
            //处理Url保留除pageIndex和pageSize以外的其他参数
            var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
            redirectTo += "?";
            string strPageIndex = "pageIndex";
            string strPageSize = "pageSize";
            foreach (string k in htmlHelper.ViewContext.RequestContext.HttpContext.Request.QueryString.Keys)
            {
                if (string.Compare(k, strPageIndex, true) != 0 && string.Compare(k, strPageSize, true) != 0)
                {
                    redirectTo += k + "=" + htmlHelper.ViewContext.RequestContext.HttpContext.Request.QueryString[k] + "&";
                }
            }
            redirectTo = redirectTo.TrimEnd(new char[] { '&' });

            pageSize = pageSize == 0 ? 3 : pageSize;
            // var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
            var totalPages = pageCount;
            var output = new StringBuilder();
            if (totalPages > 1)
            {
                if (currentPage > 1)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>上一页</a></span></li> ", redirectTo, currentPage - 1, pageSize);
                }
                if (currentPage != 1)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>1</a></span></li> ", redirectTo, 1, pageSize);
                }
                if (currentPage > 3)
                {
                    output.AppendFormat("<li ><span><a class='pageLink'>...</a></span></li> ");
                }
                if (currentPage > 2)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, currentPage - 1, pageSize, currentPage - 1);
                }
                //当前页
                if (currentPage > 0 && currentPage <= totalPages)
                {
                    output.AppendFormat("<li class='active'><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, currentPage, pageSize, currentPage);
                }
                if (currentPage + 1 < totalPages)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, currentPage + 1, pageSize, currentPage + 1);

                }
                if (currentPage + 2 < totalPages)
                {
                    output.AppendFormat("<li ><span><a class='pageLink'>...</a></span></li> ");

                }
                if (currentPage != totalPages)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, totalPages, pageSize, totalPages);
                }
                if (currentPage < totalPages)
                {
                    output.AppendFormat("<li ><span><a class=''  href='{0}&pageIndex={1}&pageSize={2}'>下一页</a></span></li> ", redirectTo, currentPage + 1, pageSize);
                }
            }
            return new HtmlString(output.ToString());
        }

转载于:https://www.cnblogs.com/xiaoweizi/p/3605414.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值