首先创建一个html的扩展方法,这个方法是万能的,可以直接拿到您的项目中使用:

 //主要就是输出分页的超级链接的标签
//自定义分页Helper扩展
public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount)
{
var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
pageSize = pageSize == 0 ? 3 : pageSize;
var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
var output = new StringBuilder();
if (totalPages > 1)
{
//if (currentPage != 1)
{//处理首页连接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize);
}
if (currentPage > 1)
{//处理上一页的连接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize);
}
else
{
// output.Append("<span class='pageLink'>上一页</span>");
} output.Append(" ");
int currint = 5;
for (int i = 0; i <= 10; i++)
{//一共最多显示10个页码,前面5个,后面5个
if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
{
if (currint == i)
{//当前页处理
//output.Append(string.Format("[{0}]", currentPage));
output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage);
}
else
{//一般页处理
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint);
}
}
output.Append(" ");
}
if (currentPage < totalPages)
{//处理下一页的链接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize);
}
else
{
//output.Append("<span class='pageLink'>下一页</span>");
}
output.Append(" ");
if (currentPage != totalPages)
{
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize);
}
output.Append(" ");
}
output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行 return new HtmlString(output.ToString());
}

如果不知道什么是扩展方法,以及不知道扩展方法如何使用,可以看我的另外一篇文章,

http://blog.csdn.net/only_yu_yy/article/details/78509091

然后在视图中调用这个方法

<div>
@Html.ShowPageNavigate((int)ViewData["pageIndex"], (int)ViewData["pageSize"], (int)ViewData["totalCount"])
</div>

最后一步,在控制器中加入如下代码:

        DataModelContainer dbContainer = new DataModelContainer();
// GET: User
public ActionResult Index(int pageIndex = 1,int pageSize=2)
{
ViewData["pageIndex"] = pageIndex;
ViewData["pageSize"] = pageSize;
ViewData["totalCount"] = dbContainer.User.Count();
ViewData.Model = dbContainer.User.OrderBy(u=>u.Id).Skip(pageSize*(pageIndex-1)).Take(pageSize).AsEnumerable();
return View();
}

这就可以轻松实现分页效果了。

最新文章

  1. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(三)
  2. C#综合揭秘——通过修改注册表建立Windows自定义协议
  3. linux 无交互添加用户设置密码
  4. System.Security.SecurityException The source was not found, but some or all event logs could not be searched.Inaccessible logs Security.
  5. Hibernate单向多对一对象关系模型映射
  6. iphone 使用 soap 服务 介绍
  7. vi, vim 基本使用(1)
  8. Activity使用Serializable传递对象实例
  9. Git操作指南(2) —— Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并(转)
  10. JAVA数组的定义及用法
  11. C语言--位运算符
  12. Java乔晓松-android中调用系统拍照功能并显示拍照的图片
  13. android 卸载程序、清除数据、停止服务用法
  14. sql点滴41—MyISAM 和 InnoDB 讲解
  15. CPU 硬盘性能
  16. c# &amp;sqlserver
  17. Linux 总是提示You have new mail in /var/spool/mail/root
  18. Nginx概述及安装配置
  19. F5负载均衡原理(转载)
  20. Spring IOC(五)依赖注入

热门文章

  1. fiddler2请求参数乱码
  2. GitHub入门之路(1)
  3. 关于WebAPI
  4. &quot;_OBJC_CLASS_$_MAMapServices&quot;, referenced from: 的问题修复
  5. 观察者模式—jdk自带源码分析
  6. Swift iOS 日期操作:NSDate、NSDateFormatter
  7. 解决`向github提交代码是老要输入用户名密码`
  8. os模块中关于文件/目录常用的函数使用方法
  9. yml 文件操作方法
  10. C#中await和async关键字的简单理解