传值的方式是通过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的简单分页【转】的更多相关文章

  1. MVC简单分页

    对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...

  2. ASP.NET MVC 简单分页代码

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. Asp.net MVC 简单分页 自做简单分页

    Asp.net MVC 简单分页:   public static string Pager(int page,int pageSize,int total)         {           ...

  4. ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender

    (原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人 ...

  5. MVC中用Jpaginate分页

    MVC中用Jpaginate分页 So easy!(兼容ie家族)   看过几款分页插件,觉得Jpaginate比较简约,样式也比较容易的定制,而且体验也比较好,支持鼠标滑动效果.先上效果图: 整个过 ...

  6. 重构MVC多条件分页解决方案

    重构MVC多条件+分页解决方案 为支持MVC的验证,无刷新查询,EF,以及让代码可读性更强一点,所以就重构了下原来的解决方案. 这里就简单讲下使用方法吧: Model: 继承PagerBase:  S ...

  7. ASP.NET MVC利用PagedList分页(一)

    前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList.PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行 ...

  8. MVC001之mvcpager简单分页

    描述:用mvcpager实现简单分页功能 参考网址: http://www.cnblogs.com/iamlilinfeng/archive/2013/03/11/2951460.html http: ...

  9. Mvc+Dapper+存储过程分页10万条数据

    10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程) 有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: 技术:Mvc ...

随机推荐

  1. Numpy的线性代数

    线性代数的矩阵乘法 线性代数(如矩阵乘法.矩阵分解.行列式以及其他方阵数学等)是任何数组库的重要组成部分.不想某些语言(如MATLAB), 通过*对两个二维数组相乘得到的是一个元素级的积,而不是一个矩 ...

  2. selenium+java+chrome环境搭建

    我只能说因为版本冲突,简直太折腾了,而搜了无数个博友的帖子才找到正确条案,就不能好好的写篇文章吗? 最近真的是太闲太闲了,平时没事总得搞点技术,不然心里感觉好空虚, 最近看上了selenium,所以试 ...

  3. Wifi 评分机制分析

    从android N开始,引入了wifi评分机制,选择wifi的时候会通过评分来选择. android O源码 frameworks\opt\net\wifi\service\java\com\and ...

  4. e618. Validating a JTextField When Permanently Losing the Focus

    This example demonstrates a text field that validates its contents when it receives a permanent focu ...

  5. POJ1157 LITTLE SHOP OF FLOWERS DP

    题目 http://poj.org/problem?id=1157 题目大意 有f个花,k个瓶子,每一个花放每一个瓶子都有一个特定的美学值,问美学值最大是多少.注意,i号花不能出如今某大于i号花后面. ...

  6. Docker镜像相关

    一.中间镜像 通过持续集成工具Jenkins构建Docker镜像并运行容器,采用的是Docker Compose来进行编排构建运行的.但是每次构建完毕以后通过docker images命令查询,可以发 ...

  7. 【Web API系列教程】3.3 — 实战:处理数据(建立数据库)

    前言 在本部分中,你将在EF上使用Code First Migration来用測试数据建立数据库. 在Tools文件夹下选择Library Package Manager,然后选择Package Ma ...

  8. excel做回归分析的应用【风控数据分析】

    方法1     统计逻辑:统计一个loginname的所有去重的通讯录数C,统计这个Loginname对应的每个设备对应的通讯录c1,c2,c3…cn; X=(c1/c+c2/c+c3/c+….cn/ ...

  9. VS2012:升级Update2和Update3均告损坏,重装方法

    My steps (after backing up everything before deleting it): 1. Uninstalled VS2012 Pro from Windows 8 ...

  10. Java读写配置文件——Properties类的简要使用笔记

    任何编程语言都有自己的读写配置文件的方法和格式,Java也不例外. 在Java编程语言中读写资源文件最重要的类是Properties,功能大致如下: 1. 读写Properties文件 2. 读写XM ...