ASP.NET MVC分页实现
ASP.NET MVC中不能使用分页控件,所以我就自己写了一个分页局部视图,配合PageInfo类,即可实现在任何页面任意位置呈现分页,由于采用的是基于POST分页方式,所以唯一的限制就是必须放在FORM中,当然以后我会考虑实现基于URL分页的!
一、PageInfo类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace ROIS.Models
{
/// <summary>
/// 分页信息
/// </summary>
public class PageInfo
{
private int _RecordCount = ;
private int _PageSize = ;
private int _CurrentPageNo=; /// <summary>
/// 获取或设置记录总数
/// </summary>
public int RecordCount
{
get
{
return _RecordCount;
}
set
{
if (value > )
{
_RecordCount = value;
}
}
} /// <summary>
/// 获取或设置每页记录数
/// </summary>
public int PageSize
{
get {
return _PageSize;
}
set {
if (value > )
{
_PageSize = value;
}
}
} /// <summary>
/// 获取或设置当前索引页码(从1开始计算)
/// </summary>
public int CurrentPageNo
{
get {
return _CurrentPageNo;
} set {
if (value > )
{
if (value > this.PageCount)
{
_CurrentPageNo = this.PageCount;
}
else
{
_CurrentPageNo = value;
}
}
}
} /// <summary>
/// 获取总页数
/// </summary>
public int PageCount
{
get
{
if (this.RecordCount <= )
{
return ;
} return this.RecordCount / this.PageSize + (this.RecordCount % this.PageSize > ? : );
}
} public PageInfo()
{ } public PageInfo(int recordCount, int currentPageNo, int pageSize = )
{
this.RecordCount = recordCount;
this.PageSize = pageSize;
this.CurrentPageNo = currentPageNo;
} /// <summary>
/// 是否为首页
/// </summary>
/// <returns></returns>
public bool IsFirstPage()
{
return (this.CurrentPageNo <= );
} /// <summary>
/// 是否为末页
/// </summary>
/// <returns></returns>
public bool IsLastPage()
{
return (this.CurrentPageNo>=this.PageCount);
} }
}
二、_Pager局部视图(建议放在Shared目录下)
@using ROIS.Models; @model PageInfo @if (Model!=null && Model.RecordCount > )
{
<div class="pager">
第@(Model.CurrentPageNo) 页 / 共@(@Model.PageCount)页,
@if (Model.IsFirstPage())
{
<span>|<首 页</span>
<span><上一页</span>
}
else
{
<a href="javascript:turnPage(1);">|<首 页</a>
<a href="javascript:turnPage(@(Model.CurrentPageNo-1));"><上一页</a>
}
@if (Model.IsLastPage())
{
<span>下一页></span>
<span>末 页>|</span>
}
else
{
<a href="javascript:turnPage(@(Model.CurrentPageNo+1));">下一页></a>
<a href="javascript:turnPage(@Model.PageCount);">末 页>|</a>
}
转到:
<select id="pages" onchange="javascript:turnPage(this.value);">
@for (int i = ; 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.form
if (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
ASP.NET MVC分页实现的更多相关文章
- ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...
- ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页
我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...
- 基于Bootstrap的Asp.net Mvc 分页
基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...
- Asp.net MVC分页实例
分页是网页基本功能,这里主要讨论在Asp.net MVC环境下分页的前端实现,不涉及后台分页.实现效果如下图显示: Step 1.建立分页信息类 public class PagingInfo { p ...
- 自己用的一个ASP.Net MVC分页拿出来分享下(转)
实例懒得做.切几个图把代码发上要用的自己搞啦~ 下面是一个helper类. namespace System.Web.Mvc { public enum BarStyle { yahoo, digg, ...
- asp.net MVC分页
.Net MVC 分页代码,分页的关键就是在于这几个参数pageIndex ,recordCount,pageSize ,下面是张林的网站做的一个简单的分页代码 效果如图 public class ...
- Asp.Net MVC 分页、检索、排序整体实现
很多时候需要这样的功能,对表格进行分页.排序和检索.这个有很多实现的方式,有现成的表格控件.用前端的mvvm,用户控件.但很多时候看着很漂亮的东西你想进一步控制的时候却不那么如意.这里自己实现一次,功 ...
- 自己动手写 ASP.NET MVC 分页 part1
学习编程也有一年半载了,从来没有自己动手写过东西,都是利用搜索软件找代码,最近偶发感慨,难道真的继续做码农??? 突发奇想是不是该自己动手写点东西,可是算法.逻辑思维都太弱了,只能copy网上的代码, ...
- ASP.NET MVC分页 Ajax+JsRender
前段时间整mvc的分页,倒是很顺利,参考了以下几篇博客,启发很大. http://www.cnblogs.com/tangmingjun/archive/2012/05/30/2526301.html ...
随机推荐
- centos 开启启动服务优化
默认开机启动服务列表:(此表转自 http://www.ha97.com/4815.html,另有多处补充) 服务名称 功能 默认 建议 备注说明 NetworkManager 用于自动连接网 ...
- 从《BLAME!》说开去——新一代生产级卡通真实感混合的渲染方案
<BLAME!>是Polygon Pictures Inc.(以下简称PPI)创业33周年以来制作的第一部CG剧场电影,故事来自于贰瓶勉的同名漫画作品(中文译名为<探索者>或者 ...
- [界面开发新秀]AYUI开发360领航版系列教程-AyWindow接入[1/40]
开发包DLL下载地址:请加入 466717219群,自己下载(已经发布ayui3.7,在群里,为了不让你作为收藏工具,也只有入群才能下载,喜欢你就进.不喜欢你还是不要来了) AYUI初衷:简单化商业软 ...
- HttpURLConnection GET/POST写法
现在虽然HttpClient很好使,但也有人在用最原生的HttpURLConnection, 记录一下,备忘之. public class HttpUrlConnect { //get请求 publi ...
- Codeforces Round #382 (Div. 2) A. Ostap and Grasshopper bfs
A. Ostap and Grasshopper 题面 On the way to Rio de Janeiro Ostap kills time playing with a grasshopper ...
- 关于移动App的五个提问
1.你的移动App利用了手机的哪些特性? 2.你们是否有用移动的角度和思维来考虑产品形态?还是简单的把Web照搬到手机上? 3.用户有什么特殊的动力去安装你们的App? 4.用户是否能很好的上手和使用 ...
- This application is currently offline. To enable the application, remove the app_offline.htm file from the application r
退出VS ,把程序中主目录里的app_offline.htm文件删除,重新启动VS 就可以了.
- sql server trace 和 Profiler
MS SQL Server Profiler概述: MS SQL Server Profiler是SQL Trace的GUI接口,提供对SQL Server Database Engine ...
- C#中yield return用法分析
这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield return的流程,更直观的分析了yield return的用法,需要的朋友可以参考下. 本文 ...
- 多条件动态LINQ 组合查询
本文章转载:http://www.cnblogs.com/wangiqngpei557/archive/2013/02/05/2893096.html 参考:http://dotnet.9sssd.c ...