ASP.NET MVC中不能使用分页控件,所以我就自己写了一个分页局部视图,配合PageInfo类,即可实现在任何页面任意位置呈现分页,由于采用的是基于POST分页方式,所以唯一的限制就是必须放在FORM中,当然以后我会考虑实现基于URL分页的!

一、PageInfo类

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5
  6 namespace ROIS.Models
  7 {
  8     /// <summary>
  9     /// 分页信息
 10     /// </summary>
 11     public class PageInfo
 12     {
 13         private int _RecordCount = 0;
 14         private int _PageSize = 10;
 15         private int _CurrentPageNo=1;
 16
 17         /// <summary>
 18         /// 获取或设置记录总数
 19         /// </summary>
 20         public int RecordCount
 21         {
 22             get
 23             {
 24                 return _RecordCount;
 25             }
 26             set
 27             {
 28                 if (value > 0)
 29                 {
 30                     _RecordCount = value;
 31                 }
 32             }
 33         }
 34
 35         /// <summary>
 36         /// 获取或设置每页记录数
 37         /// </summary>
 38         public int PageSize
 39         {
 40             get {
 41                 return _PageSize;
 42             }
 43             set {
 44                 if (value > 0)
 45                 {
 46                     _PageSize = value;
 47                 }
 48             }
 49         }
 50
 51         /// <summary>
 52         /// 获取或设置当前索引页码(从1开始计算)
 53         /// </summary>
 54         public int CurrentPageNo
 55         {
 56             get {
 57                 return _CurrentPageNo;
 58             }
 59
 60             set {
 61                 if (value > 0)
 62                 {
 63                     if (value > this.PageCount)
 64                     {
 65                         _CurrentPageNo = this.PageCount;
 66                     }
 67                     else
 68                     {
 69                         _CurrentPageNo = value;
 70                     }
 71                 }
 72             }
 73         }
 74
 75         /// <summary>
 76         /// 获取总页数
 77         /// </summary>
 78         public int PageCount
 79         {
 80             get
 81             {
 82                 if (this.RecordCount <= 0)
 83                 {
 84                     return 1;
 85                 }
 86
 87                 return this.RecordCount / this.PageSize + (this.RecordCount % this.PageSize > 0 ? 1 : 0);
 88             }
 89         }
 90
 91         public PageInfo()
 92         { }
 93
 94         public PageInfo(int recordCount, int currentPageNo, int pageSize = 10)
 95         {
 96             this.RecordCount = recordCount;
 97             this.PageSize = pageSize;
 98             this.CurrentPageNo = currentPageNo;
 99         }
100
101
102         /// <summary>
103         /// 是否为首页
104         /// </summary>
105         /// <returns></returns>
106         public bool IsFirstPage()
107         {
108             return (this.CurrentPageNo <= 1);
109         }
110
111
112         /// <summary>
113         /// 是否为末页
114         /// </summary>
115         /// <returns></returns>
116         public bool IsLastPage()
117         {
118             return (this.CurrentPageNo>=this.PageCount);
119         }
120
121     }
122 }
123  

二、_Pager局部视图(建议放在Shared目录下)

@using ROIS.Models;@model PageInfo@if (Model!=null && Model.RecordCount > 0)
{
<div class="pager">第@(Model.CurrentPageNo) 页&nbsp;/&nbsp;共@(@Model.PageCount)页,
@if (Model.IsFirstPage())
{<span>|&lt;首&nbsp;&nbsp;页</span><span>&lt;上一页</span>
}
else
{<a href="javascript:turnPage(1);">|&lt;首&nbsp;&nbsp;页</a><a href="javascript:turnPage(@(Model.CurrentPageNo-1));">&lt;上一页</a>
}
@if (Model.IsLastPage())
{<span>下一页&gt;</span><span>末&nbsp;&nbsp;页&gt;|</span>
}
else
{<a href="javascript:turnPage(@(Model.CurrentPageNo+1));">下一页&gt;</a><a href="javascript:turnPage(@Model.PageCount);">末&nbsp;&nbsp;页&gt;|</a>
}
转到:
<select id="pages" οnchange="javascript:turnPage(this.value);">@for (int i = 1; i <= Model.PageCount; i++){if (Model.CurrentPageNo == i){<option value="@i" selected="selected">第@(i)页</option>}else{<option value="@i">第@(i)页</option>}}
</select>
<input type="hidden" id="_pageno" name="_pageno" />
</div>
<script type="text/javascript">
<!--function turnPage(pageNo) {var oPageNo = document.getElementById("_pageno");oPageNo.value = pageNo;oPageNo.form.submit();}function getForm(obj) { //这个没有用到,但可以取代上面的oPageNo.formif (obj.parentNode.nodeName.toLowerCase() == "form") {return obj.parentNode;} else {getForm(obj.parentNode);}}
//-->
</script>}

三、使用方法:

后台Controller的Action中加入:

string pageNo = Request.Form["_pageno"];
            int iPageNo = 1;
            int.TryParse(pageNo, out iPageNo);
            PageInfo pageInfo=new PageInfo(5000,iPageNo, 20);

ViewBag.PageInfo = pageInfo;

前台VIEW页面代码如下:(注: ROIS是我专案名称,依实际情况更换)

@using (Html.BeginForm())
{
      这里面是数据列表HTML代码

@Html.Partial("_Pager", ViewBag.PageInfo as ROIS.Models.PageInfo)

}

原文出自我的个人网站:http://www.zuowenjun.cn/post/2014/08/26/24.html

本文转自 梦在旅途 博客园博客,原文链接:http://www.cnblogs.com/zuowj/p/3937041.html  ,如需转载请自行联系原作者

ASP.NET MVC分页实现相关推荐

  1. asp.net MVC分页

    .Net MVC  分页代码,分页的关键就是在于这几个参数pageIndex ,recordCount,pageSize ,下面是张林的网站做的一个简单的分页代码 效果如图 public class ...

  2. 基于Bootstrap的Asp.net Mvc 分页的实现(转)

    最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一个Mvc 项目,既然是分页就需要一些数据,我这 边是模拟了一 ...

  3. asp.net mvc jqgrid 同一个页面查询不同的表,jqgrid显示不同表的表头和数据并且分页...

    基于我上一篇文章<a href="http://www.cnblogs.com/alasai/p/4765756.html">asp.net mvc excel导入&l ...

  4. 在 asp.net mvc中的简单分页算法 (续)

    在上个月发表的 http://www.cnblogs.com/bwangel/p/mvcpager.html 中,讨论了一下asp.net mvc中结合Entity framework框架进行的分页, ...

  5. ASP.NET MVC 简单的分页思想与实现

    首先我们通过VS创建一个空的基于Razor视图引擎的ASP.NET MVC3 Web应用程序,命名为JohnConnor.Web 对创建过程或Razor不太了解的看官,请移步 ASP.NET MVC ...

  6. ASP.NET MVC 4使用PagedList.Mvc分页

    ASP.NET MVC中进行分页的方式有多种,在NuGet上有提供使用PagedList.PagedList.Mvc进行分页. 1. 通过NuGet引用PagedList.Mvc 在安装引用Paged ...

  7. 在ASP.NET MVC中使用Boostrap实现产品的展示、查询、排序、分页

    在产品展示中,通常涉及产品的展示方式.查询.排序.分页,本篇就在ASP.NET MVC下,使用Boostrap来实现. 源码放在了GitHub: https://github.com/darrenji ...

  8. asp.net MVC使用EF框架进行分页讲解

    asp.net MVC使用EF框架分页 数据库脚本 数据库以Roles为例 控制器代码 视图代码 数据库脚本 USE [master] GO /****** Object: Database [Rba ...

  9. 我使用Asp.net MVC WebAPI支持OData协议进行分页操作的笔记(第二篇)

    在阅读这篇文章的时候,我想你已经看完第一篇文章啦·也有可能跟我一样,现在正在使用它Asp.net WebAPI为我们干活儿.可能是服务分页查询接口,也可能是其它操作,遇到了一些小问题.有问题,那咱就来 ...

最新文章

  1. String与NSString关系
  2. Oracle中 的 DBMS_CRYPTO加密包
  3. Java Web - Struts2基本执行流程
  4. 10-穿墙代理的设置 | 01.数据抓取 | Python
  5. odata协议里filter操作自带的函数 - endswith
  6. 详解centos7 YCM YouCompleteMe自动补全安装,亲测成功
  7. 带你制作百词斩单词表读写插件
  8. linux安装程序乱码,linux远程桌面乱码解决及引起的相关问题、字库安装
  9. raspberry pi3_Raspberry Pi 3,Linux Mint安全漏洞,针对Zika病毒的Google数据处理等
  10. (21)System Verilog按时间顺序的通知需求(变量驱动)
  11. 计算机无论采用何种方式接入网络,自考计算机网络实用技术考核知识点之Internet的结构及其接入方式...
  12. 机器学习:用正规方程法求解线性回归
  13. 电工在计算机方面的应用,计算机在电工技术实验的应用
  14. c语言制作电脑病毒原理,用C语言编写的简单病毒
  15. 语音数字信号处理技术应用 --- 创新点头脑风暴
  16. python pip安装镜像源
  17. 百度——测试开发实习生面试记录
  18. java四则运算简单界面版
  19. 2023年上海国际车展展中新车报告
  20. 学计算机专业选i5四核还是6核,计算机CPU的4核和6核有什么区别?

热门文章

  1. 自噬相关数据库Human Autophagy Database使用指南
  2. 机器人学习--Robotics: Estimation and Learning(宾夕法尼亚大学COURSERA课程)
  3. 毕业论文 | 基于STM32的MPU6050程序设计(源码)——卡尔曼滤波
  4. 北斗导航 | 北斗系统信息处理创新技术(学术PPT分享附视频)
  5. C语言 | 编程实现6
  6. mysql 实现按首字母字典序排序以及根据字段汉字首字母搜索
  7. CTabControl使用(系统配置程序部分功能)
  8. obj是什么意思_为什么要学正则表达式 - 3
  9. 语音情感识别----语音特征集之eGeMAPS,ComParE,09IS,BoAW
  10. Python 程序打包 -- 使用pyinstaller