ASP.NET MVC实践 对查询后分页处理的解决方案

发表于:2009-11-20 10:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  这里的分页代码和Contrib中略有不同,一会儿我们来讲解这个不同的原因。

  添加一个Controller:

  Controller

  1  public ActionResult CustomPager(int? page)
  2         {
  3             int pageSize = 3;
  4             int pageNumber = page ?? 1;
  5             var list = ListNews.GetList()
  6                 .Where(p => p.Title.Contains(Request.QueryString["title"] ?? ""))
  7                 .Where(p => p.Author.Contains(Request.QueryString["author"] ?? ""));
  8
  9             var pageList=list.Skip((pageNumber - 1) * pageSize).Take(pageSize);
  10             int total = list.Count();
  11             CustomPagination<News> customes = new CustomPagination<News>(pageList, pageNumber, pageSize, total);
  12
  13             return View(customes);
  14         }
  15         [AcceptVerbs(HttpVerbs.Post)]
  16         public ActionResult CustomPager(FormCollection formCollection)
  17         {
  18             int pageSize = 3;
  19             int pageNumber =  1;
  20             var list = ListNews.GetList().Where(p => p.Title.Contains(Request.Form["title"]))
  21                 .Where(p => p.Author.Contains(Request.Form["author"]));
  22             int total = list.Count();
  23             var pageList = list.Skip((pageNumber - 1) * pageSize).Take(pageSize);
  24             CustomPagination<News> customes = new CustomPagination<News>(pageList, pageNumber, pageSize, total);
  25             Dictionary<string, string> d = new Dictionary<string, string>();
  26             d.Add("title", Request.Form["title"]);
  27             d.Add("author", Request.Form["author"]);
  28             ViewData["Search"] = d;
  29             return View(customes);
  30         }

  注:这部分内容的详细讲解可以参见:ASP.NET MVC实践系列7-Grid实现(下-利用Contrib实现)

  三、Contrib的分页源码分析

  我们先把Pagination和Pager两个文件夹中的源码copy出来,经过分析我们知道CustomPagination是实现了IPagination接口的集合,我们把数据整合到CustomPagination中就可以使用Pager进行分页了,PaginationExtensions是辅助HtmlHelper使用扩展方法的静态类。

42/4<1234>
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号