代码改变世界

TagHelper分页代码

2017-12-29 14:27  aitkon  阅读(310)  评论(0)    收藏  举报

https://www.cnblogs.com/wangrudong003/p/5705744.html
这篇文章中,默认的分页样式是有多页,就显示多少页,这个实际情况中并不实用

所以临时改进,页码同时最多显示10页,超出部分显示省略号,并且有首页和尾页。
下面是相关代码:


            //构造分页样式
            var sbPage = new StringBuilder(string.Empty);
            switch (PagerOption.StyleNum)
            {
                case 2:
                    {
                        break;
                    }
                default:
                    {
                        #region 默认样式
                        sbPage.Append("<nav>");
                        sbPage.Append($"<div>共{totalPage}页,{PagerOption.Records}条记录</div>");
                        sbPage.Append("  <ul>");
                        if (PagerOption.CurrentPage > 1)
                        {
                            sbPage.AppendFormat($"<li><a href=\"{PagerOption.RouteUrl}/1\" aria-label=\"Previous\"><span aria-hidden=\"true\">首页</span></a></li>");
                            sbPage.AppendFormat($"<li><a href=\"{PagerOption.RouteUrl}/{PagerOption.CurrentPage - 1}\" aria-label=\"Previous\"><span aria-hidden=\"true\">«</span></a></li>");
                        }
                        int firstNum = 0,CentNum = 0, lastNum = 0;
                        if (PagerOption.CurrentPage < centSize)
                        {
                            firstNum = 1;
                        }
                        else
                        {
                            firstNum = PagerOption.CurrentPage - (centSize / 2);
                            if (firstNum > totalPage - centSize)
                            {
                                firstNum = totalPage - centSize;
                            }
                        }
                        lastNum = totalPage;
                        if (lastNum > centSize)
                            lastNum = firstNum + centSize;
                        if (PagerOption.CurrentPage >= centSize)
                        {
                            CentNum = PagerOption.CurrentPage + centSize - ((centSize / 2) + 1); //中间结束的页码
                            sbPage.Append("<li class=\"more\"><span>...</span></li>");
                        }
                        for (int i = firstNum; i <= lastNum; i++)
                        {
                            string strClass = i == PagerOption.CurrentPage ? "class=\"active\"" : "";
                            sbPage.AppendFormat($"<li {strClass}><a href=\"{PagerOption.RouteUrl}/{i}\">{i}</a></li>");
                        }
                        if (totalPage - PagerOption.CurrentPage > centSize - ((centSize / 2)))
                        {
                            sbPage.Append("<li class=\"more\"><span>...</span></li>");
                        }
                        if (PagerOption.CurrentPage < lastNum)
                        {
                            int nextPage = PagerOption.CurrentPage + 1 > totalPage ? PagerOption.CurrentPage : PagerOption.CurrentPage + 1;
                            sbPage.AppendFormat($"<li><a href=\"{PagerOption.RouteUrl}/{nextPage}\" aria-label=\"Next\"><span aria-hidden=\"true\">»</span></a></li>");
                            sbPage.AppendFormat($"<li><a href=\"{PagerOption.RouteUrl}/{totalPage}\" aria-label=\"Next\"><span aria-hidden=\"true\">尾页</span></a></li>");
                        }

                        sbPage.Append("</ul>");
                        sbPage.Append("</nav>");
                        #endregion
                    }
                    break;
            }