MVC的简单分页【转】
传值的方式是通过querystring。
本例子是把整需要的数据查出来再分页的,因为当时做的时候数据很少,只有几十条。
如果数据多的话,可以在存储过程里分页,只是要传页码和记录的条数过来。
控制器:
//分页
ViewBag.PageIndex = pageIndex;
ViewBag.PageSize = pageSize;
if (agentDetail.ProjectAgentStat!=null)
ViewBag.RecondCount = agentDetail.ProjectAgentStat.Count; //如果在存储过程分页就要传这个值
else
ViewBag.RecondCount = ;
agentDetail.ProjectAgentStat = agentDetail.ProjectAgentStat.Skip<SProjectAgentStat>((pageIndex - ) * pageSize).Take(pageSize).ToList<SProjectAgentStat>(); //此处的数据源可以是在存储过程里分好的数据源 ,ProjectAgentStat 为IList的对象
return View(agentDetail);
分页的控件:
namespace System.Web.Mvc
{
public static class PageHtml
{
/// <summary>
/// 扩展UrlHelper,实现输出分页HTML
/// </summary>
/// <param name="urlHelper"></param>
/// <param name="controllerName">控制器名</param>
/// <param name="actionName">行为名</param>
/// <param name="pageSize">分页大小</param>
/// <param name="pageIndex">当前页码</param>
/// <param name="recordCount">总记录数</param>
/// <returns></returns>
public static MvcHtmlString Pager(this UrlHelper urlHelper, string controllerName, string actionName, int pageSize, int pageIndex, int recordCount)
{
// 如果分页大小等于0,则返回空字符串
if (pageSize == )
{
return MvcHtmlString.Create(string.Empty);
} // 根据总记录数和分页大小计算出分页数量
int pageCount = (int)decimal.Ceiling((decimal)recordCount / (decimal)pageSize); // 首页、末页
string firstStr = string.Empty;
string lastStr = string.Empty;
if (recordCount > )
{
string firstUrl = urlHelper.Action(actionName, controllerName, new { pagenum = });
firstStr = "<a href='" + firstUrl + "'>首页</a>"; string lastUrl = urlHelper.Action(actionName, controllerName, new { pagenum = pageCount });
lastStr = "<a href='" + lastUrl + "'>末页</a>";
}
else
{
firstStr = "首页";
lastStr = "末页";
} // 上一页
string preStr = string.Empty;
if (pageIndex > && pageIndex <= pageCount)
{
string prevUrl = urlHelper.Action(actionName, controllerName, new { pagenum = pageIndex - });
preStr = "<a href='" + prevUrl + "'>上一页</a>";
}
else
{
preStr = "上一页";
} // 下一页
string nextStr = string.Empty;
if (pageIndex > && pageIndex < pageCount)
{
string nextUrl = urlHelper.Action(actionName, controllerName, new { pagenum = pageIndex + });
nextStr = "<a href='" + nextUrl + "'>下一页</a>";
}
else
{
nextStr = "下一页";
} // 页码
string numStr = string.Empty;
if (pageCount > )
{
// 遍历输出全部的页码
for (int i = ; i <= pageCount; i++)
{
string numUrl = urlHelper.Action(actionName, controllerName, new { pagenum = i }); // 当前页码加粗
if (i == pageIndex)
{
numStr += "[<a href='" + numUrl + "'><strong>" + i + "</strong></a>] ";
}
else
{
numStr += "[<a href='" + numUrl + "'>" + i + "</a>] ";
}
}
} string pageStr = firstStr + " " + preStr + " " + numStr + nextStr + " " + lastStr; return MvcHtmlString.Create(pageStr);
}
}
}
视图:
@Url.Pager("project", "agentdetail/" + @Model.ProjectLineStat.ProjectId, (int)ViewBag.PageSize, (int)ViewBag.PageIndex, (int)ViewBag.RecondCount)
URL的样子为:/project/agentdetail/61?pagenum=2
参考网址:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-url-pager/
MVC的简单分页【转】的更多相关文章
- MVC简单分页
对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...
- ASP.NET MVC 简单分页代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Asp.net MVC 简单分页 自做简单分页
Asp.net MVC 简单分页: public static string Pager(int page,int pageSize,int total) { ...
- ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender
(原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人 ...
- MVC中用Jpaginate分页
MVC中用Jpaginate分页 So easy!(兼容ie家族) 看过几款分页插件,觉得Jpaginate比较简约,样式也比较容易的定制,而且体验也比较好,支持鼠标滑动效果.先上效果图: 整个过 ...
- 重构MVC多条件分页解决方案
重构MVC多条件+分页解决方案 为支持MVC的验证,无刷新查询,EF,以及让代码可读性更强一点,所以就重构了下原来的解决方案. 这里就简单讲下使用方法吧: Model: 继承PagerBase: S ...
- ASP.NET MVC利用PagedList分页(一)
前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList.PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行 ...
- MVC001之mvcpager简单分页
描述:用mvcpager实现简单分页功能 参考网址: http://www.cnblogs.com/iamlilinfeng/archive/2013/03/11/2951460.html http: ...
- Mvc+Dapper+存储过程分页10万条数据
10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程) 有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: 技术:Mvc ...
随机推荐
- 传统餐饮O2O支付体系成难题
传统餐饮O2O支付体系成难题 网的数据化参考,使得门店运营更具科学性. 作为“易淘食”这样的订餐网站,主要依靠与餐厅分成 来获得利润.“根据每个餐厅合作情况不同,每一笔订单我们可获得5%-15%的佣金 ...
- 3ds Max 中的导航控件ViewCube入门介绍
介绍 ViewCube 3D导航控件提供当前方向的视觉反馈,让用户可以调整视图方向以及在标准视图与等距视图间进行切换. 软件环境:3d Max2015 第一步.启动3d Max软件,打开场景文件 Vi ...
- JDBC WHERE子句条件实例
在本教程将演示如何在JDBC应用程序中,从数据库表中查询数据记录, 在查询选择记录时使用WHERE子句添加其他条件. 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模 ...
- Spring JDBC处理CLOB类型字段
以下示例将演示使用spring jdbc更新CLOB类型的字段值,即更新student表中的可用记录. student表的结构如下 - CREATE TABLE student( ID INT NOT ...
- Build opencv libraries for android arm, x86 ubuntu
废话不多说. 准备工作: 1. 下载源代码: http://opencv.org/ 编译平台:ubuntu14.04 opencv 2.4.6.1 本人用这样的办法编译了opecv 2.4.9 的没有 ...
- 【阿里云】WindowsServer2012 搭建FTP站点 图文记录
配置说明: 服务商:阿里云 系统: WindowsServer2012 一:配置FTP服务器 1.进入操作系统,直接从启动栏打开服务器管理器,选择添加功能和角色 2.选择服务器 3.勾选FTP服务器选 ...
- VMware克隆虚拟机后无法启动网卡
最简单的办法: 修改这个文件:/etc/udev/rules.d/70_persistent-net.rules 把eth1修改为eth0,记下里面的mac地址 修改/etc/sysconfig/ne ...
- Hadoop学习笔记——安装Hadoop
sudo mv /home/common/下载/hadoop-2.7.2.tar.gz /usr/local sudo tar -xzvf hadoop-2.7.2.tar.gz sudo mv ha ...
- php扩展模块安装
- iptables filter表小案例
案例1:把80端口,22端口,21端口放行 22端口指定IP访问,其它IP拒绝. shell脚本实现: [root@centos7 ~]# vim /usr/local/sbin/iptables.s ...