ASP.NET MVC- MvcPager
本文目标
一、能够使用MvcPager进行分页
本文目录
一、MvcPager控件的简单使用
二、C#扩展方法
一、MvcPager控件的简单使用
1、添加MvcPager.dll的引用[下载]
2、Control中的方法
1 //获取列表
2 public ActionResult List(int? id = 1)
3 {
4 List<DTO.User> userList = new List<DTO.User>();
5 int totalCount = 0;
6 int pageIndex = id ?? 1;
7 userList = SC.Repository.User.GetList("", 2, (pageIndex - 1) * 2, out totalCount);
8 PagedList<DTO.User> mPage = userList.AsQueryable().ToPagedList(pageIndex, 2);
9 mPage.TotalItemCount = totalCount;
10 mPage.CurrentPageIndex = (int)(id ?? 1);
11 return View(mPage);
12 }
SC.Repository.User.GetList("", 2, (pageIndex - 1) * 2, out totalCount)方法为分页方法,此处的StrUserName只是在查询的时候一个条件而发,其他和传统的分页一样如下:
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 public static IQueryable<TElement> AsQueryable<TElement>(this IEnumerable<TElement> source);
再调用MvcPager中对IQueryable<T>的扩展方法转换成PagedList<T>供View中使用,接口如下:
1 public static PagedList<T> ToPagedList<T>(this IQueryable<T> allItems, int pageIndex, int pageSize);
3、View中使用MvcPager
1 @model PagedList<SongCai8.DTO.User>
2 @using Webdiyer.WebControls.Mvc;
3 @{
4 Layout = null;
5 }
6 <!DOCTYPE html>
7 <html>
8 <head>
9 <title>List</title>
10 </head>
11 <body>
12 @foreach (SongCai8.DTO.User user in Model)
13 {
14 @user.UserID<span>---</span>@user.UserName<span>---</span>
15 @Html.ActionLink("Edit", "Edit", new { id = user.UserID }) <span>---</span>
16 @Html.ActionLink("Details", "Details", new { id = user.UserID }) <span>---</span>
17 @Html.ActionLink("Delete", "Delete", new { id = user.UserID })<span>---</span>
18
19 <br />
20 }
21 <br />
22 <br />
23 @Html.Pager(Model, new PagerOptions
24 {
25 PageIndexParameterName = "id",
26 ShowPageIndexBox = true,
27 FirstPageText = "首页",
28 PrevPageText = "上一页",
29 NextPageText = "下一页",
30 LastPageText = "末页",
31 PageIndexBoxType = PageIndexBoxType.TextBox,
32 PageIndexBoxWrapperFormatString = "请输入页数{0}",
33 GoButtonText = "转到"
34 })
35 <br />
36 >>分页 共有 @Model.TotalItemCount 篇留言 @Model.CurrentPageIndex/@Model.TotalPageCount
37 </body>
38 </html>
4、效果如下:
二、C#扩展方法
MSDN:扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。
理解什么是扩展方法:用静态类及静态方法为原有类的添加新的方法。说起来有点抽象,边上代码边解释。
原始类:
1 public class Person
2 {
3 public string ShowName()
4 {
5 return "显示名称";
6 }
7 }
我们定义了一个Person类,类里只有一个方法ShowName()。众所周知,代码如下:
1 Person person = new Person();
2 person.ShowName();
扩展类:
加入“显示密码的”扩展方法(为了体现出对比性,下面代码稍有重复):
1 //原始类
2 public class Person
3 {
4 public string ShowName()
5 {
6 return "显示名称";
7 }
8 }
9
10 //扩展Person的静态类
11 public static class ExtensionMethod
12 {
13 public static string ShowPassword(this Person person)
14 {
15 return "显示密码";
16 }
17 }
代码解释:
ExtensionMethod中的ShowPassword参数this Person 说明要扩展的类型为Person类,并且要用this关键字修饰。在使用时这个参数是不需要传入的,这点和我们在传统的类中方法参数有些不同。
使用:
使用与平时我们使用在类中定义的方法相同,代码如下:
1 Person person = new Person();
2 //原始方法
3 Response.Write(person.ShowName());
4 //换行
5 Response.Write("<br />");
6 //扩展方法
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
Maticsoft.BLL.guestbook gb = new Maticsoft.BLL.guestbook();
public ActionResult Index(int pageIndex = )
{
//获取页大小
int PageCount = DbHelperSQL.GetSplitPageCount("guestbook", "1=1");
//根据参数 获取分页List数据
List<Maticsoft.Model.guestbook> lists = gb.DataTableToList(DbHelperSQL.GetSplitPageList("guestbook", "*", "id", "desc", , pageIndex, "1=1"));
//转换成mvcPager控件的List的类型
PagedList<Maticsoft.Model.guestbook> mvcPageList = lists.AsQueryable().ToPagedList(, );
mvcPageList.TotalItemCount = PageCount;
mvcPageList.CurrentPageIndex = pageIndex; return View(mvcPageList);
}
View视图的内容显示
1.需先引有类和设置model
@using Webdiyer.WebControls.Mvc;
@model PagedList<Maticsoft.Model.guestbook>
<div>
@foreach (Maticsoft.Model.guestbook item in Model)
{
Response.Write(item.names + ":" + item.contents + "<a href='/GuestBook/Delete/?id=" + item.id + "'>delete</a>");
Response.Write("<hr/>");
}
</div>
<div class="clear">
@Html.Pager(Model, new PagerOptions
{
PageIndexParameterName = "pageIndex",
ShowPageIndexBox = true,
FirstPageText = "首页",
PrevPageText = "上一页",
NextPageText = "下一页",
LastPageText = "末页",
PageIndexBoxType = PageIndexBoxType.TextBox,
PageIndexBoxWrapperFormatString = "请输入页数{0}",
GoButtonText = "转到"
})
</div>
ASP.NET MVC- MvcPager的更多相关文章
- ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...
- MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)
该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的Upda ...
- ASP.NET MVC中使用MvcPager异步分页+在分页中复选框下一页上一页也保持选中
ASP.NET MVC 分页使用的是作者杨涛的MvcPager分页控件 地址:http://www.webdiyer.com/mvcpager/demos/ajaxpaging/ 这个分页控件在里面 ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...
- ASP.NET MVC 教程汇总
自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...
- ASP.NET MVC之PagedList使用
ASP.NET MVC之PagedList使用 ---由于最近项目中用到了分页这里也来记录一下,一方面给自己一个记录,另一方面给后来者一些帮助! 一.首先大家先来看一下效果
- 全网最全ASP.NET MVC 教程汇总
全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...
- asp.net MVC4 +MVCpager
asp.net MVC4 +MVCpager 无刷新分页 本人菜鸟,最近在用MVC4和MVCpager做无刷新分页时,发现点击下一页时数据不是Ajax提交的,弄了好久终于找到原因,原来还是Jquery ...
- Asp.Net MVC 3
Asp.Net MVC 3 wcf基础教程之 契约(合同)Contract 摘要: 在前几篇博客中我有说到服务的寄宿,就是服务要运行起来必须采取的几种方式,相当于我们可以照葫芦画瓜的效果运行一个w ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)
自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...
随机推荐
- python【第二十一篇】Django模板继承、分页、cookie验证
1.模板继承 母版master.html {% block title %}{% endblock %}2 {% block table-cont %}{% endblock %} 子板 {% ext ...
- [转]Python中的矩阵转置
Python中的矩阵转置 via 需求: 你需要转置一个二维数组,将行列互换. 讨论: 你需要确保该数组的行列数都是相同的.比如: arr = [[1, 2, 3], [4, 5, 6], [7, 8 ...
- STM32库函数开发使用总结
一.外设常具备的几类寄存器 控制寄存器xxx_CR (Control/Configuration Register): 用来配置.控制响应外设的工作方式,如GPIOx_CRL.AFIO_EXTICR1 ...
- asp.net mvc将html编译
从数据库查询出来的值,如果包含html标签并且通过MVC绑定页面的话,那么他会通过浏览器编译为字符串显示,所以我们有得在从新的转一次: HtmlString hh = new HtmlString(M ...
- Socket实现简单的聊天通信
最近学习了Socket后,感觉Socket挺好玩的,在博客中看到socket在实时聊天功能的很强大,于是乎就做了一个简单的聊天功能,今天贴出来,能够与大家一起共享,有不对之处,能够给予指出,谢谢! 服 ...
- [转]HTTP Error 400. The request hostname is invalid.
一般看到网站提示Bad Request(Invalid Hostname)错误我们都会说是iis,apache出问题了,iis出现这种问题解决办法大概是:IIS> 默认网站> > 属 ...
- 240多个jQuery插件
概述 jQuery 是继 prototype 之后又一个优秀的 Javascript 框架.其宗旨是—写更少的代码,做更多的事情.它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不 ...
- NOI冲刺计划2
吐槽:距离上一次写计划还没有一个月呢,咋又喊要重写捏?可以直接从上一次的计划粘上个一大半. bzoj刷题速度还是在计划之内的,这大半个月中,我bzoj刷进500道,知识方面主要是把莫比乌斯反演系统性的 ...
- javascript中通过replace函数搜索和替换指定字符串
javascript中我们可以通过replace函数替换部分字符串为指定字符串,本文展示了replace的详细用法,并且通过范例演示了如何进行部分替换.完整替换和不区分大小写替换. javascrip ...
- Multi-bit per cell storage
Memories Scaling 其他的的半导体存储器的制程一般2年为一个升级周期,但是nand flash 存储器的制程升级周期和他们比起来只有1年.这种更快的制程升级导致SLC NAND ...