传值的方式是通过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. 第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解

    第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解 信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行 ...

  2. Maven外部依赖

    正如大家所了解的那样,Maven确实使用 Maven 库的概念作依赖管理.但是,如果依赖是在远程存储库和中央存储库不提供那会怎么样? Maven 提供为使用外部依赖的概念,就是应用在这样的场景中的. ...

  3. (原)tslib的交叉编译

    今天准备重新来交叉编译qt5.3.1的源码,由于按网上说的,需要先编译tslib,所以拿起来之前的编译源码,打算重新用新的交叉编译工具再次编译一次,在查找资料的过程中浪费了些许时间.其实直接就在使用s ...

  4. 制作U盘启动安装CentOS Linux系统

    制作U盘启动安装CentOS Linux系统 (特为老男孩教育&&51CTO学院在线三期同学而发) 方法一:使用UltraISO,将u盘做成启动盘 文件-->打开-->选择 ...

  5. TensorFlow-tensorboard可视化

    运行了很多次出现错误,错误原因在于运行tensorboard时,需要退出python编辑

  6. 查看WEB服务器的连接数

    查看WEB服务器的连接数 https://technet.microsoft.com/en-us/sysinternals/bb897437 tcpView

  7. Thinkphp5笔记三:创建基类

    做项目之前,一定要先部署要自己的"基类",非常的重要.打个比方,要访问会员中心相关的控制器,这类控制器是不是都要有一个“登录限制”,才让访问会员相关的控制器? 一.创建三大基类 原 ...

  8. 【WPF】附加属性

    一直都对附加属性理解很模糊,今天看了一篇文章,恍然大悟,用个Demo掩饰一下对附加属性的理解 附加属性,简单的理解就是给一个对象外在的定义一个属性,使得该对象拥有和使用该属性,最典型的是Grid.Ro ...

  9. 【VirtualBox】ubuntu虚拟机与windows设置共享文件夹

    第一步:配置 http://blog.csdn.net/a962804835/article/details/72820355 第二步:解决ubuntu下共享文件夹无访问权限的问题 http://bl ...

  10. org.apache.http.client.methods.HttpGet 转到定义找不到源代码

    例如 org.apache.http.client.methods.HttpGet ,提示没有源码 到这里下载 http://hc.apache.org/downloads.cgi Source 4. ...