您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

c#用mvc的Html.Pager实现自定义分页功能解析

wiki 2022/1/3 8:32:09 dotnet 字数 9991 阅读 1071

c#吗v从用mvcs的Html.Pager实现自定义分页功能解析

效果如图


/// <summary>
        /// 创建分页链接
        /// </summary>
        /// <param name="helper">HtmlHelper类</param>
        /// <param name="startPage">开始页 (多数情况下是 1)</param>
        /// <param name="currentPage">当前页</param>
        /// <param name="totalPages">总页数</param>
        /// <param name="pagesToShow">前后显示的页数</param>
        public static MvcHtmlString Pager(this HtmlHelper helper, int startPage, int currentPage, int totalPages, int totalcount)
        {
            RouteData routeData = helper.ViewContext.RouteData;
            //你可能还要获取action
            string action = routeData.Values["action"].ToString();
            string controller = routeData.Values["controller"].ToString();

            //当前页的前几页
            long firstPage = Math.Max(currentPage - 5, 1);
            //当前页的后几页
            long lastPage = Math.Min(currentPage + 6, totalPages);
            StringBuilder html = new StringBuilder();
            if (lastPage > 1)
            {
                //创建从第一页到最后一页的列表
                html.AppendFormat(@"<ul class=""pagination"">");
                var urlFormat = "";
                //第一页时显示:domain/archives
                UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
                urlFormat = helper.ViewContext.RequestContext.HttpContext.Request.Url.LocalPath.ToString();
                //绘制分页,首页
                var pp2 = "";
                var parm = helper.ViewContext.RequestContext.HttpContext.Request.Url.Query.ToString();
                if (!string.IsNullOrWhiteSpace(parm))
                {
                    parm = parm.Replace("?", "");
                    var s = parm.Split('&');
                    for (var i = 0; i < s.Length; i++)
                    {
                        if (!string.IsNullOrWhiteSpace(s[i]))
                        {
                            if (!s[i].Contains("page"))
                            {
                                pp2 += "&" + s[i];
                            }
                        }
                    }
                }
                urlFormat += "?" + pp2;
                html.AppendFormat("<li class='page '><a href='{0}&page={1}'>首页</a></li>", urlFormat, firstPage);

                //绘制分页中间数据部分
                for (long i = firstPage; i <= lastPage; i++)
                {
                    //   string url = urlFormat.Replace("{pageNum}", i.ToString());
                    if (i == currentPage)  //点击后就不显示超链接
                    {
                        html.AppendFormat("<li class='page active'><a href='{0}&page={1}'>{1}</a></li>", urlFormat, i);
                    }
                    else
                    {
                        html.AppendFormat("<li class='page '><a href='{0}&page={1}'>{1}</a></li>", urlFormat, i);
                    }
                }
                //显示最后一页
                html.AppendFormat("<li class='page '><a href='{0}&page={1}'>末页</a></li>", urlFormat, lastPage);

                html.Append(@"</ul>");
                html.AppendFormat(@"<div class='totalcountnum' style='float: left;line-height: 32px; margin-top: 20px; border: 1px solid rgb(204, 204, 204); border - radius: 5px 0px 0px 5px; color: rgb(153, 153, 153); padding: 0px 5px;'> 总数:{0}</div>", totalcount);
            }
            return MvcHtmlString.Create(html.ToString());
        }
调用方法:

<!--放置分页 begin --> <table class="pageTable"> <tbody> <tr> <td colspan="15"> <div class="pageIn"> @(Html.Pager(1, Model.Page, Model.TotalPages, Model.TotalCount)) </div> </td> </tr> </tbody> </table> <!--放置分页 end -->
需要引用bootstrap.css


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶