本文目标

一、能够使用MvcPager进行分页

本文目录

一、MvcPager控件的简单使用

二、C#扩展方法

一、MvcPager控件的简单使用

1、添加MvcPager.dll的引用[下载]

2、Control中的方法

 
  1. 1 //获取列表
  2. 2 public ActionResult List(int? id = 1)
  3. 3 {
  4. 4 List<DTO.User> userList = new List<DTO.User>();
  5. 5 int totalCount = 0;
  6. 6 int pageIndex = id ?? 1;
  7. 7 userList = SC.Repository.User.GetList("", 2, (pageIndex - 1) * 2, out totalCount);
  8. 8 PagedList<DTO.User> mPage = userList.AsQueryable().ToPagedList(pageIndex, 2);
  9. 9 mPage.TotalItemCount = totalCount;
  10. 10 mPage.CurrentPageIndex = (int)(id ?? 1);
  11. 11 return View(mPage);
  12. 12 }
 

SC.Repository.User.GetList("", 2, (pageIndex - 1) * 2, out totalCount)方法为分页方法,此处的StrUserName只是在查询的时候一个条件而发,其他和传统的分页一样如下:

  1. 1 public static List<DTO.User> GetList(string StrUserName, int PageSize, int CurrentCount, out int TotalCount)

PagedList<DTO.User> mPage = userList.AsQueryable().ToPagedList(pageIndex, 2);

这里用到了扩展方法,首先将userList调用Linq中的扩展IEnumerable接口的方法,把List<T>转换成为IQueryable<T>,接口如下:

  1. 1 public static IQueryable<TElement> AsQueryable<TElement>(this IEnumerable<TElement> source);

再调用MvcPager中对IQueryable<T>的扩展方法转换成PagedList<T>供View中使用,接口如下:

  1. 1 public static PagedList<T> ToPagedList<T>(this IQueryable<T> allItems, int pageIndex, int pageSize);

3、View中使用MvcPager

 
  1. 1 @model PagedList<SongCai8.DTO.User>
  2. 2 @using Webdiyer.WebControls.Mvc;
  3. 3 @{
  4. 4 Layout = null;
  5. 5 }
  6. 6 <!DOCTYPE html>
  7. 7 <html>
  8. 8 <head>
  9. 9 <title>List</title>
  10. 10 </head>
  11. 11 <body>
  12. 12 @foreach (SongCai8.DTO.User user in Model)
  13. 13 {
  14. 14 @user.UserID<span>---</span>@user.UserName<span>---</span>
  15. 15 @Html.ActionLink("Edit", "Edit", new { id = user.UserID }) <span>---</span>
  16. 16 @Html.ActionLink("Details", "Details", new { id = user.UserID }) <span>---</span>
  17. 17 @Html.ActionLink("Delete", "Delete", new { id = user.UserID })<span>---</span>
  18. 18
  19. 19 <br />
  20. 20 }
  21. 21 <br />
  22. 22 <br />
  23. 23 @Html.Pager(Model, new PagerOptions
  24. 24 {
  25. 25 PageIndexParameterName = "id",
  26. 26 ShowPageIndexBox = true,
  27. 27 FirstPageText = "首页",
  28. 28 PrevPageText = "上一页",
  29. 29 NextPageText = "下一页",
  30. 30 LastPageText = "末页",
  31. 31 PageIndexBoxType = PageIndexBoxType.TextBox,
  32. 32 PageIndexBoxWrapperFormatString = "请输入页数{0}",
  33. 33 GoButtonText = "转到"
  34. 34 })
  35. 35 <br />
  36. 36 >>分页 共有 @Model.TotalItemCount 篇留言 @Model.CurrentPageIndex/@Model.TotalPageCount
  37. 37 </body>
  38. 38 </html>
 

4、效果如下:

二、C#扩展方法

MSDN:扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。

理解什么是扩展方法:用静态类及静态方法为原有类的添加新的方法。说起来有点抽象,边上代码边解释。

原始类:

 
  1. 1 public class Person
  2. 2 {
  3. 3 public string ShowName()
  4. 4 {
  5. 5 return "显示名称";
  6. 6 }
  7. 7 }
 

我们定义了一个Person类,类里只有一个方法ShowName()。众所周知,代码如下:

  1. 1 Person person = new Person();
  2. 2 person.ShowName();

扩展类:

加入“显示密码的”扩展方法(为了体现出对比性,下面代码稍有重复):

 
  1. 1 //原始类
  2. 2 public class Person
  3. 3 {
  4. 4 public string ShowName()
  5. 5 {
  6. 6 return "显示名称";
  7. 7 }
  8. 8 }
  9. 9
  10. 10 //扩展Person的静态类
  11. 11 public static class ExtensionMethod
  12. 12 {
  13. 13 public static string ShowPassword(this Person person)
  14. 14 {
  15. 15 return "显示密码";
  16. 16 }
  17. 17 }
 

代码解释:

ExtensionMethod中的ShowPassword参数this Person 说明要扩展的类型为Person类,并且要用this关键字修饰。在使用时这个参数是不需要传入的,这点和我们在传统的类中方法参数有些不同。

使用:

使用与平时我们使用在类中定义的方法相同,代码如下:

 
  1. 1 Person person = new Person();
  2. 2 //原始方法
  3. 3 Response.Write(person.ShowName());
  4. 4 //换行
  5. 5 Response.Write("<br />");
  6. 6 //扩展方法
  7. 7 Response.Write(person.ShowPassword());
 

效果如下:

应用:

最常见的扩展方法是添加查询功能添加到现有 System.Collections.IEnumerable 和 System.Collections.Generic.IEnumerable<T> 类型的 LINQ 标准查询运算符。若要使用标准查询运算符,请首先将它们输入与 using System.Linq 名称空间。 然后,任何实现了 IEnumerable<T> 的类型看起来都具有 GroupBy、OrderBy、Average 等实例方法。 在 IEnumerable<T> 类型的实例(如 List<T> 或 Array)后键入“dot”时,可以在 IntelliSense 语句完成中看到这些附加方法。

详细请查阅MSDN:http://msdn.microsoft.com/zh-cn/library/bb383977.aspx

转载自:http://www.cnblogs.com/iamlilinfeng/archive/2013/03/11/2951460.html

========================================================================

用自己写的分页存储过程,结合MVCPANGER分布控件进行分页

注:PagedList<Maticsoft.Model.guestbook> mvcPageList = lists.AsQueryable().ToPagedList(, ); 这句,第一个参数是1,因为进行自已写的分页函数后,已分布后,不需要使用到将全部数据取出再分页那种形式,所以的他一直默认取1

  1. Maticsoft.BLL.guestbook gb = new Maticsoft.BLL.guestbook();
  2. public ActionResult Index(int pageIndex = )
  3. {
  4. //获取页大小
  5. int PageCount = DbHelperSQL.GetSplitPageCount("guestbook", "1=1");
  6. //根据参数 获取分页List数据
  7. List<Maticsoft.Model.guestbook> lists = gb.DataTableToList(DbHelperSQL.GetSplitPageList("guestbook", "*", "id", "desc", , pageIndex, "1=1"));
  8. //转换成mvcPager控件的List的类型
  9. PagedList<Maticsoft.Model.guestbook> mvcPageList = lists.AsQueryable().ToPagedList(, );
  10. mvcPageList.TotalItemCount = PageCount;
  11. mvcPageList.CurrentPageIndex = pageIndex;
  12.  
  13. return View(mvcPageList);
  14. }

View视图的内容显示

1.需先引有类和设置model

@using Webdiyer.WebControls.Mvc;
@model PagedList<Maticsoft.Model.guestbook>

  1. <div>
  2. @foreach (Maticsoft.Model.guestbook item in Model)
  3. {
  4. Response.Write(item.names + ":" + item.contents + "<a href='/GuestBook/Delete/?id=" + item.id + "'>delete</a>");
  5. Response.Write("<hr/>");
  6. }
  7. </div>
  8. <div class="clear">
  9. @Html.Pager(Model, new PagerOptions
  10. {
  11. PageIndexParameterName = "pageIndex",
  12. ShowPageIndexBox = true,
  13. FirstPageText = "首页",
  14. PrevPageText = "上一页",
  15. NextPageText = "下一页",
  16. LastPageText = "末页",
  17. PageIndexBoxType = PageIndexBoxType.TextBox,
  18. PageIndexBoxWrapperFormatString = "请输入页数{0}",
  19. GoButtonText = "转到"
  20. })
  21. </div>

  

ASP.NET MVC- MvcPager的更多相关文章

  1. ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...

  2. MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)

    该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的Upda ...

  3. ASP.NET MVC中使用MvcPager异步分页+在分页中复选框下一页上一页也保持选中

    ASP.NET MVC 分页使用的是作者杨涛的MvcPager分页控件  地址:http://www.webdiyer.com/mvcpager/demos/ajaxpaging/ 这个分页控件在里面 ...

  4. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总

    MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...

  5. ASP.NET MVC 教程汇总

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  6. ASP.NET MVC之PagedList使用

    ASP.NET MVC之PagedList使用 ---由于最近项目中用到了分页这里也来记录一下,一方面给自己一个记录,另一方面给后来者一些帮助! 一.首先大家先来看一下效果

  7. 全网最全ASP.NET MVC 教程汇总

    全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...

  8. asp.net MVC4 +MVCpager

    asp.net MVC4 +MVCpager 无刷新分页 本人菜鸟,最近在用MVC4和MVCpager做无刷新分页时,发现点击下一页时数据不是Ajax提交的,弄了好久终于找到原因,原来还是Jquery ...

  9. Asp.Net MVC 3

    Asp.Net MVC 3   wcf基础教程之 契约(合同)Contract 摘要: 在前几篇博客中我有说到服务的寄宿,就是服务要运行起来必须采取的几种方式,相当于我们可以照葫芦画瓜的效果运行一个w ...

  10. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

随机推荐

  1. PHP实现斐波那契数列非递归方法

    斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n ...

  2. Ubuntu 安装 JDK 7 / JDK8 的两种方式

    ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用pp ...

  3. 李洪强漫谈iOS开发[C语言-031]-逻辑短路

  4. xbmc

    XBMC是一个优秀的自由和开源的(GPL)媒体中心软件.XBMC最初为Xbox而开发,可以运行在Linux.OSX.Windows.Android4.0系统.XBMC能够播放几乎所有流行的音频和视频格 ...

  5. 【Xamarin开发 Android 系列 6】 Android 结构基础(上)

    原文:[Xamarin开发 Android 系列 6] Android 结构基础(上) 前面大家已经熟悉了什么是Android,而且在 [Xamarin开发 Android 系列 4] Android ...

  6. jquery仿alert提示框、confirm确认对话框、prompt带输入的提示框插件[附实例演示]

    jquery仿alert提示框.confirm确认对话框.prompt带输入的提示框插件实例演示 第一步:引入所需要的jquery插件文件: http://www.angelweb.cn/Inc/eg ...

  7. 方便的Chrome取色插件ColorPick Eyedropper [设计, FE必备]

    最近在和Design合作开发, 她发过来的原型图有各种各样色配色, 不想让她一个一个地标记颜色, 嫌效率低. 于是自己找到一款方便的Chrome取色插件, 叫做ColorPick Eyedropper ...

  8. Cursor的moveToFirst和moveToNext

    参考: http://blog.csdn.net/kerlw/article/details/6126448 总结: 查询得到的cursor是指向第一条记录之前的,因此查询得到cursor后第一次调用 ...

  9. Codevs_1690_开关灯_(线段树)

    描述 http://codevs.cn/problem/1690/ 一排共 n 个灯,起初都是关着的,现在有 m 次操作. 0 开头的操作代表将 l ~ r 的开关按一遍,1 开头的操作代表询问 l ...

  10. NET Framework GAC目录构造

    转:http://www.yl1001.com/userzone.htm?doaction=article&art_id=5851381388387201 我们一般都知道,.NET Frame ...