ASP.NET MVC 4 分页

1、分页列表


2、分页实体类(WebApp.Models)

    public class TaskDefinitionModel: KTD.WorkFlowService.TaskDefinition
    {
        public KTD.Providers.PagingData.PagedList<KTD.WorkFlowService.TaskDefinition> PagedList { get; set; }

        /// <summary>
        /// 数据库列的名称,通过它对数据进行排序
        /// </summary>
        public string SortBy { get; set; }
        /// <summary>
        /// 一个布尔值,指示是否升序排序数据
        /// </summary>
        public bool SortAscending { get; set; }


        /// <summary>
        /// 一个只读属性,返回一个排序的值的字符串SortBy SortAscending属性
        /// </summary>
        public string SortExpression
        {
            get
            {
                return this.SortAscending ? this.SortBy + " desc" : this.SortBy + " asc";
            }
        }
    }

3、分页控制类(WebApp.Controllers)

       public ActionResult Index(string keywords, bool? ascending, string sortBy = "ProcessDefinitionID,OrderValue", int pageIndex = 1, int pageSize = 10)
        {
            List<TaskDefinition> list = tdBLL.GetAll(sortBy,false);
            PagedList<TaskDefinition> pagedList = new PagedList<TaskDefinition>(list, pageIndex, pageSize);
            var model = new WebApp.Models.TaskDefinitionModel
            {
                SortBy = sortBy,
                SortAscending = ascending.GetValueOrDefault(),
                PagedList = pagedList
            };
            return View(model);
        }

3、分页页面(Views/TaskDefinition/_PagerLink.cshtml) 

@model WebApp.Models.TaskDefinitionModel
@{

    var razorWriter = ViewContext.Writer;

    var currentPage = Model.PagedList.PageIndex;
    var totalCount = Model.PagedList.TotalItemCount;
    var pageSize = Model.PagedList.PageSize;
   
    pageSize = pageSize == 0 ? 3 : pageSize;
    var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数

    var routeData = new RouteValueDictionary { { "pageIndex", currentPage }, { "pageSize", pageSize } };

    if (!string.IsNullOrEmpty(Request.QueryString["sortBy"]))
    {
        routeData.Add("sortBy", Request.QueryString["sortBy"]);
    }

    if (!string.IsNullOrEmpty(Request.QueryString["ascending"]))
    {
        routeData.Add("ascending", Request.QueryString["ascending"]);
    }
    
    var output = new System.Text.StringBuilder();

    var htmlAttributes = new Dictionary<string, object>();
    htmlAttributes.Add("class", "pageLink");
    if (totalPages > 1)
    {
        routeData["pageIndex"] = 1;
        output.Append(Html.ActionLink("首页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
        if (currentPage > 1)
        {
            routeData["pageIndex"] = currentPage - 1;
            output.Append(Html.ActionLink("上一页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
        }
        output.Append(" ");
        
        int currint = 5;
        for (int i = 0; i <= 10; i++)
        {
            if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
            {
                if (currint == i)
                {
                    var cpbAttributes = new Dictionary<string, object>();
                    cpbAttributes.Add("class", "cpb");
                    routeData["pageIndex"] = currentPage;
                    output.Append(Html.ActionLink(currentPage.ToString(), Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, cpbAttributes).ToHtmlString());
                }
                else
                {
                    routeData["pageIndex"] = currentPage + i - currint;
                    output.Append(Html.ActionLink((currentPage + i - currint).ToString(), Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
                }
            }
            output.Append(" ");
        }
        
         if (currentPage < totalPages)
         {
             routeData["pageIndex"] = currentPage + 1;
             output.Append(Html.ActionLink("下一页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
         }
        
         output.Append(" ");
         if (currentPage != totalPages)
         {
             routeData["pageIndex"] = totalPages;
             output.Append(Html.ActionLink("末页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
         }
         output.Append(" ");
    }

    output.AppendFormat("<label>第{0}页 / 共{1}页</label>", currentPage, totalPages);

    razorWriter.Write(output.ToString());
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值