顺★

导航

asp.net mvc3 简单分页帮助器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Text;
using System.Web.Mvc.Html;

namespace UpLoadFile.Helper
{
    public static class HelpPager
    {
        /// <summary>
        ///   分页pager显示
        /// </summary>
        /// <param name="html"></param>
        /// <param name="currentPageStr">没用加的好玩</param>
        /// <param name="pageSize">每页显示</param>
        /// <param name="totalCount">总数据量</param>
        /// <returns></returns>
        public static MvcHtmlString pager(this HtmlHelper html, string currentPageStr, int pageSize, int totalCount)
        {
            var stringPage = html.ViewContext.HttpContext.Request.QueryString["page"];//获取当前url中page的值
            var queryString = html.ViewContext.HttpContext.Request.QueryString;
            int currentPage = 1;
            var totalPages = Math.Max((totalCount + pageSize - 1)/pageSize, 1);//总页数
            //与相应的QueryString绑定
            if (!string.IsNullOrEmpty(stringPage))
            {
                currentPage = int.Parse(stringPage);//当前页
            }

            var dict = new UrlHelper(html.ViewContext.RequestContext);
            var que = new RouteValueDictionary();
            var output = new StringBuilder();

            for (int i = 0; i < queryString.Count; i++)
            {
                que.Add(queryString.Keys[i], queryString[i].ToString());
            }

            if (totalPages > 1)
            {
                if (currentPage != 1)
                {
                    //处理首页链接
                    que["page"] = string.Empty;
                    output.AppendFormat("<a href=\"{0}\" title=\"第一页\" class=\"page-start\">首页</a>",
                                    dict.RouteUrl(que));
                }

                if (currentPage > 1)
                {
                    //处理上一页
                    que["page"] = String.Format("{0}", currentPage - 1);
                    output.AppendFormat("<a href=\"{0}\" title=\"上一页\" class=\"page-prev\">上一页</a>",
                                    dict.RouteUrl(que));
                }

      //可以自己随便写,给的例子
                for (int i = 0; i < 5; i++)
                {
                    //当前页
                    que["page"] = String.Format("{0}", currentPage + i);
                    output.AppendFormat("<a href=\"{1}\"  class=\"page-cur\" title=\"第{0}页\">{0}</a>", currentPage + i, dict.RouteUrl(que));    
                }

                if (currentPage < totalPages)
                {
                    //处理下一页的链接
                    que["page"] = String.Format("{0}", currentPage + 1);
                    output.AppendFormat("<a href=\"{0}\" title=\"下一页\" class=\"page-prev\">下一页</a>",
                                    dict.RouteUrl(que));
                }

                if (currentPage != totalPages)
                {
                    que["page"] = String.Format("{0}", totalPages);
                    output.AppendFormat("<a href=\"{0}\" title=\"末页\" class=\"page-prev\">末页</a>",
                                    dict.RouteUrl(que));
                }
            }
            return MvcHtmlString.Create(output.ToString());
        }
    }
}

页面调用 @Html.pager("List",5, 100)

posted on 2011-11-11 17:16  顺★  阅读(492)  评论(0编辑  收藏  举报