本例使用表格Users(Uid,UserName,PassWord),数据库访问使用EF first code.

   public class Users
{
[Key]
public int Uid { get; set; }
public string UserName { get; set; }
public string PassWord { get; set; } }

第一步:下载MVCPager.dll,添加到引用中。

MVCPager分页控件和AspNetPager分页控件是同一作者:陕西吴起娃,相信以前很多人都用过他的AspNetPager分页控件。MVCPager.dll可到他的个人主页去下载 http://www.webdiyer.com/

第二步:添加命名空间

打开view文件夹中下的web.config,添加两个命名空间。

  <pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Webdiyer.WebControls.Mvc"/>
<add namespace="ajaxDemo.Models"/>
</namespaces>
</pages>

做这一步的目的,是为view文件夹下的所有视图统一添加命名空间,就不需要每一个去单独添加。<add namespace="Webdiyer.WebControls.Mvc"/>这个命名空间,就是MVCPager分页控件的命名空间。<add namespace="ajaxDemo.Models"/>是您的项目下的Models。此处我的项目名称是ajaxDemo。

第三步:制作分部视图

ajax分页,是将数据分好后,放在一个分部视图中,然后再将分部视图放在主视图中。

根据模板,创建一个list的分部视图,我取名为UserPager.cshtml

@model PagedList<Users> //此处需要修改

@*//此表格放入一个DIV中,并设置ID,分页控件中需要用天此ID*@
<div id="data">
<table>
<tr>
<th>
用户名
</th>
<th>
密码
</th>
<th></th>
</tr> @foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.PassWord)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Uid }) |
@Html.ActionLink("Details", "Details", new { id=item.Uid }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Uid })
</td>
</tr>
}
</table>
@*//此处添加分页控件*@
@Html.AjaxPager(
Model,
new PagerOptions { PageIndexParameterName = "page" },
new AjaxOptions { UpdateTargetId = "data" }
)
</div>

主要修改三个地方:

1、最开始一行修改为@model PagedList<Users>,Users为您的实体名。

2、将表格<table>放入到一个div中,并为此DIV设定一个ID,后面放置分页控件时会用到此ID。

3、在表格<table>的后面,放置分页控件,我设定的分页参数为page,需要分页的区域为data.

至此,分部视图制作完成。

第四步:制作主视图的控制器

我将主视图命名为UserList

 public ActionResult UserList(int? page)
{
PagedList<Users> u = db.Users.OrderBy(c=>c.Uid).ToPagedList (page ?? , );
if (Request.IsAjaxRequest())
return PartialView("UserPager", u);
return View(u);
}

分页参数是page,是前面放控件时设定好的,默认显示第1页,每页显示10条记录。

注意,在查询数据时,一定要用OrderBy排序,否则会出错。因为作者用的是linq的take和skip函数来进行分页的,用这两个函数前必须要排序。

第五部:制作视图UserList.cshtml

分部视图是不能独立显示的,必须放在其它主视图中显示。此例,我是将分部视图UserPager.cshtml放在主视图UserList.cshtml中显示。

分部视图主要用来分页,主视图主要用来调用分部显示显示数据。

@model PagedList<Users>
@{
ViewBag.Title = "UserList";
Layout = "~/Views/Shared/_Layout.cshtml";
} <h2>用户列表</h2>
@{Html.RenderPartial("UserPager",Model);}

可根据控件器,创建空视图,添加第一行和最后一行,最后一行即是调用分部视图。

至此,分页完成。

MVC3学习:利用mvc3+ajax结合MVCPager实现分页的更多相关文章

  1. MVC3学习:利用mvc3+ajax实现全选和批量删除

    本例数据库操作使用EF code first; 先利用mvc自带的模板,先生成一个list视图,然后再手动添加复选框和删除按钮 <table> <tr> @*在标题行添加一个全 ...

  2. MVC3学习:利用mvc3+ajax实现级联下拉列表框

    本例使用的是EF first code操作数据库. 一.准备数据库 级联下拉列表框,比较经典的就是省市数据表,在Model里同时创建三个类:province.cs.city.cs和dropContex ...

  3. 在ASP.NET MVC3 中利用Jsonp跨域访问

    在ASP.NET MVC3 中利用Jsonp跨域访问 在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复 ...

  4. MVC3.0+knockout.js+Ajax 实现简单的增删改查

    MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...

  5. ASP.NET MVC3入门教程之ajax交互

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=100&extra=page%3D1 随着web技术的不断发展与 ...

  6. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  7. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  8. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  9. 学习笔记之AJAX无刷新分页

    利用AJAX实现无刷新分页技术原理: 其主要是利用AJAX的异步处理机制,实现数据的异步传递,它隐藏了客户端向服务端请求数据的状态,在客户端表现为无刷新的显示状态. 实现分页的步骤: 1.客服端点击页 ...

随机推荐

  1. AngularJS的$location基本用法和注意事项

    一.配置config app.config([ '$locationProvider', function($locationProvider) { $locationProvider.html5Mo ...

  2. std::string的find问题研究

    https://files-cdn.cnblogs.com/files/aquester/std之string的find问题研究.pdf 目录 目录 1 1. 前言 1 2. find字符串 1 3. ...

  3. gcc和vs在c的一些区别

    1.switch中每个标签后面的命令在gcc中需要{}括起来以指明作用域. 2._itoa是非标准的c和c++扩展函数,在linux下可以使用sprintf(string,   "%d &q ...

  4. Codeforces820A Mister B and Book Reading 2017-06-28 09:38 67人阅读 评论(0) 收藏

    A. Mister B and Book Reading time limit per test 2 seconds memory limit per test 256 megabytes input ...

  5. hdu 5054

    http://acm.hdu.edu.cn/showproblem.php?pid=5054 确定是否矩形中点 这都能hack成功,无语 #include <cstdio> #includ ...

  6. mysql变更数据的捕获和入库

    问题:涉及状态的信息,mysql中是update的,缺少中间状态的记录.数据分析中需要这部分数据. 思路:后端服务通过监控某张表的某个字段,根据mysql的binlog文件,还原数据,发送到kafka ...

  7. 转:spring的启动过程-spring和springMVC父子容器的原理

    要想很好理解这三个上下文的关系,需要先熟悉spring是怎样在web容器中启动起来的.spring的启动过程其实就是其IoC容器的启动过程,对于web程序,IoC容器启动过程即是建立上下文的过程. s ...

  8. 用JavaScript写的动态表格

    实现的功能有Table表格添加,删除.输入,删除的全选,单行删除. HTML代码部分 <body> <form> <table border="1" ...

  9. ASP.NET Core ef启用数据迁移

    创建一个项目 通过Nuget获取EF Core相关的扩展包 appsettings.json 建立数据库连接串 创建数据库上下文EntityDbContext类,用于实体类映射数据库表 使用包管理器控 ...

  10. DevExpress中获取GridControl排序之后的List

    public System.Collections.IList GetGridViewFilteredAndSortedData(DevExpress.XtraGrid.Views.Grid.Grid ...