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 ...
随机推荐
- LINUX ORACLE 启动与关闭
1.环境变量 如果没有配置环境变量的要配置哟,已配置就不用配置了! export ORACLE_BASE=/home/oracle/app export ORACLE_HOME=$ORACLE_BAS ...
- 用ARM实现音乐电子相册
(前段时间在做嵌入式的课程设计,特将学习心得整理如下) 一.开发工具及环境介绍 1.ARM处理器 ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计. ARM ...
- Swing文本域的编辑
1..setEditable(false); 设置文本域不可编辑 2..setHorizontalAlignment(JTextField.CENTER); // 设置文本的水平对齐方式 有效值包括: ...
- js 操作json对象增删改
//将表单序列化成字符串 $.fn.serializeObject = function () { var obj = {}; var count = 0; $.each(this.serialize ...
- DOS批处理基础
1. echo 和 @ 回显命令 @ #表示不显示@后面的命令 echo off #从下一行开始关闭回显 @echo off ...
- 惊艳的HTML5动画特效及源码
今天我们要来分享一些很酷的HTML5动画演示,HTML5的强大之处在于它可以利用canvas的特性来绘制很多普通网页无法完成的图形和动画,canvas就像一块超级画板,在上面不仅可以实现平面图形,而且 ...
- UITableView 顶部能够放大的图片
UITableView 顶部能够放大的图片 现在有挺多的应用在 UITableView 顶部加入图片,通过拖拽 UITableView 来实现图片的放大. 对比一下腾讯出品的两款App QQ:可展示更 ...
- eclipse 安装图形插件(图形化编程)
打开eclipse 查看什么版本 ,我的是Oxygen help --> install newsoftware 打开地址 http://www.eclipse.org/windowbuilde ...
- 软件设计模式之单例模式(JAVA)
什么是单例模式? 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系 ...
- Asp.net mvc怎么在razor里写js代码
我试图在Razor里写JS代码,但是不行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3 ...