不管使用什么来开发程序,都少不了需要做分页,目前使用asp.net mvc开发的web应用程序的人越来越多了,相应的辅助,提高开发效率的helper方法、控件都将会出现。今天我向大家介绍一款在asp.net mvc框架中使用的分页控件。本人也是在新年的时候初次使用,但是一直没有推荐给大家。利用五一休息时间也就介绍给大家。声明我与博杨计算机有限公司无任何关系只是觉得这个分页控件很好用,并且功能强大,在这里是真的只为介绍这款分页控件。
另外下载地址:http://mvcpager.codeplex.com/releases/view/42912
另外还有相关使用的DEMO也很丰富,上面的网址也可以下载非常完整的DEMO。
DEMO里有使用各种在asp.net mvc中提倡的方式来实现分页功能,分别有:
1.标准的Url分页 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/Demo
2.jquery ajax分页 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/AjaxDemo
3.Microsoft Ajax分页 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/MicrosoftAjaxDemo
4.使用DataRow集合分页 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/DataRowsPaging
5.ASP.NET MVC Pager分页控件用户自定义信息 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/CustomInfo
6.MvcPager应用CSS样式 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/ApplyStyles
7.保持Url参数(分页恢复Url参数) 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/UrlParameters?year=2009&month=12&author=webdiyer
8.ajax正在加载效果分页 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/Loading
9.使用自定义路由表实现分页 在线演示效果请看:http://www.webdiyer.com/Controls/MvcPager/CustomRouteTable/employee_1/page_1
10.MvcPager使用存储过程分页 http://www.webdiyer.com/Controls/MvcPager/StoredProcedure
11.ASP.NET MvcPager Ajax产生异常处理分页 http://www.webdiyer.com/Controls/MvcPager/AjaxEvents
12.MvcPager使用输入或选择页索引并跳转实现分页 http://www.webdiyer.com/Controls/MvcPager/PageIndexBox
大家可以根据自己的实际情况选择使用那种分页方式或者同时使用几种分页方式。
MvcPager的介绍
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码,尤其是ScottGu的 PagedList
MvcPager主要功能有:
从Visual Studio 2008的“文件”菜单中选择“新建”,然后点击“项目...”子菜单,在弹出的“新建项目”窗口左侧的“项目类型”列表中选择“Web”,然后在右边窗口中选择“ASP.NET MVC Web Application”,根据需要修改项目名称和项目保存位置后点击“确定”按钮,在随后弹出的“创建单元测试项目”对话框中选择“不创建单元测试项目”,然后单点“确定”按钮,Visual Studio 2008就会创建一个包含最基本配置和模板的ASP.NET MVC项目;(注:如果“新建项目”窗口中没有“ASP.NET MVC Web Application”项目,则表示您没有安装ASP.NET MVC框架,请从这里下载安装。)
2、添加对ASP.NET MVC Pager程序集的引用:在解决方案资源管理器窗口中的“引用”文件夹上点击右键,从弹出的菜单中选择“添加引用...”,在弹出的“添加引用”对话框中,点击最上边的“浏览”标签页,在下边的查找下拉框中定位到MvcPager.dll所在的文件夹,从下边的文件列表中选中MvcPager.dll,然后点击“确定”按钮,关闭“添加引用”窗口,MvcPager会出现在解决方案资源管理器的“引用”文件夹中;
3、创建Model对象:本演练中我们使用SQL Server 2005的Northwnd数据库(数据库包含在可下载的示例项目中),对Orders表中的数据进行分页显示。首先需要建立Model对象,本演练中我们使用LINQ to SQL类。在解决方案资源管理器中Model文件夹上点击右键,选择“添加”—“新项目...”,在弹出的“添加新项目”窗口左侧“类别”列表中选择“Data(数据)”,在右边窗口中选择“LINQ to SQL类”,根据需要修改窗口下方的文件名称(本演练中为“MvcPagerSample.dbml”),然后点击“确定”按钮,Visual Studio 2008就会创建一个空白的dbml文件并在设计器中打开。
在Visual Studio 2008服务器资源管理器中新建一个连接到Northwnd示例数据库的连接(若数据库不存在,可以将示例中的数据库文件附加到SQL Server 2005的数据库中),点击连接名称打开数据库,并展开表节点下的数据库表,选中其中的“Orders”表并将其拖放到在Visual Studio 2008设计器中打开的dbml文件中,Visual Studio 2008会自动生成一个Order实体类。
4、创建Controller并编写Action:在解决方案资源管理器中的“Controller”文件夹上点击右键,从弹出的菜单中选择“新建”—“Controller”,在弹出的“Add Controller”对话框中修改Controller名称为OrdersController,然后点击“新建”按钮,Visual Studio 2008会创建一个新的Controller类并在编辑器中打开,该Controller类中已默认创建了一个名为Index的Action,我们将使用该Action来获取分页的数据并将其传递给View显示。
在OrdersController类中将要用到ASP.NET MVC Pager中的PagedList类和ToPagedList扩展方法,所以在修改Action之前,需要先引入Webdiyer.WebControls.Mvc 命名空间,在OrdersController最上方的引入命名空间代码中,添加如下代码:using Webdiyer.WebControls.Mvc;,然后修改Index的Action代码如下:
public ActionResult Index(int? id)
{
using (var db = new MvcPagerSampleDataContext())
{ PagedListorders = db.Orders.ToPagedList(id ?? 1, 20);
return View(orders);
}
}ToPagedList扩展方法的第一个参数表示当前页索引(从1开始),第二个参数是每页显示的记录数,此处我们设为20。 5、创建View并编写数据显示代码:
在刚刚修改的Index的Action方法内点击右键,从快捷菜单中选择“Add View”,在弹出的“Add View”对话框中按默认设置直接点击“添加”按钮,Visual Studio 2008会自动在Views文件夹下创建一个Orders文件夹并生成名为Index.aspx的View文件,同时在编辑器中打开Index.aspx以便可以立即对该View进行修改。
在Index.aspx文件中引入Order实体类所在的命名空间和MvcPager所在的Webdiyer.WebControls.Mvc命名空间,类似于这样:
然后将页面最上方Page指令代码中的 Inherits="System.Web.Mvc.ViewPage" 改为:Inherits="System.Web.Mvc.ViewPage
订单编号 订单日期 顾客编号 收货地址 <%foreach(Order od in Model) { %> <%=od.OrderID %> <%=od.OrderDate.ToString() %> <%=od.CustomerID %> <%=od.ShipAddress %> <% } %>
<%=Html.Pager(Model,new PagerOptions{PageIndexParameterName="id"}) %>
因为本示例中我们使用的是默认的Route “{controller}/{action}/{id}”,将最后的id参数做为分页参数,因此需要设置MvcPager中的PagerOptions的PageIndexParameterName属性值,该值默认为“pageIndex”。
6、添加Orders链接并运行示例:打开解决方案资源管理器中Views文件夹下的Home文件夹中的Index.aspx,添加对刚才创建的显示Orders的页面的链接,代码如下:
<%=Html.ActionLink("订单分页示例","Index","Orders") %>
然后按住ctrl+F5键即可用Visual Studio 2008内置的web服务器运行和查看示例效果。