asp.net MVC4 +MVCpager 无刷新分页

本人菜鸟,最近在用MVC4和MVCpager做无刷新分页时,发现点击下一页时数据不是Ajax提交的,弄了好久终于找到原因,原来还是Jquery引用的问题,现在把代码粘出来,希望能帮到刚接触的程序员,第一次自己写博客,文才不好,有什么改进的地方还希望大神多多指教。

 1 using Webdiyer.WebControls.Mvc;
 2 namespace MVCPage.Controllers
 3 {
 4     public class HomeController : Controller
 5     {
 6         public ActionResult Index(int?id,string name)
 7         {
 8             id = id ?? 1;
 9             int pageSize =3;
10             DemoDBEntities db = new DemoDBEntities();
11             IQueryable<Person> temp = db.Person.Where(c =>true).OrderBy(c=>c.ID);
12             PagedList<Person> pageList = temp.AsQueryable<Person>().ToPagedList<Person>(id.Value, pageSize);
13             if (Request.IsAjaxRequest())
14             {
15                 return PartialView("_ParIndex",pageList);
16             }
17             return View(pageList);
18         }
19     }
20 }

控制器代码

这是先提醒一下,新建项目后必须引用MVCpager.dll,引用时希望去下载最新的2.0版本,不然还会有其他问题。

 1 @using Webdiyer.WebControls.Mvc
 2 @model Webdiyer.WebControls.Mvc.PagedList<MVCPage.Models.Person>
 3 @{
 4     ViewBag.Title = "Index";
 5 }
 6 <div>
 7     @using (Ajax.BeginForm("index", new RouteValueDictionary { { "id", "" } },
 8      new AjaxOptions { UpdateTargetId = "articles", HttpMethod = "Get",
 9       InsertionMode = InsertionMode.Replace}, new RouteValueDictionary { { "id", "searchForm" } }))
10     {
11      <input placeholder="请输入姓名" type="text" name="name" id="source" style="width:120px"/>
12         <input type="submit" value="搜索"/>
13     }
14 </div>
15 <div id="MVCpager">
16    @Html.Partial("_ParIndex", Model)
17 </div>
18 @section Scripts{@{Html.RegisterMvcPagerScriptResource();}
19 <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
20  }

视图Index页面

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>@ViewBag.Title</title>
 5 </head>
 6
 7 <body>
 8     @RenderBody()
 9     <script type="text/javascript" src="/Scripts/jquery-1.8.2.min.js"></script>
10     @RenderSection("Scripts",false)
11 </body>
12 </html>

布局页_Layout.cshtml

 1 @using Webdiyer.WebControls.Mvc
 2 @model Webdiyer.WebControls.Mvc.PagedList<MVCPage.Models.Person>
 3 <table>
 4     <tr>
 5         <th>姓名
 6         </th>
 7         <th>年龄
 8         </th>
 9         <th>性别
10         </th>
11         <th></th>
12     </tr>
13     @foreach (var item in Model)
14     {
15         <tr>
16             <td>
17                 @Html.DisplayFor(modelItem => item.Name)
18             </td>
19             <td>
20                 @Html.DisplayFor(modelItem => item.Age)
21             </td>
22             <td>
23                 @Html.DisplayFor(modelItem => item.Sex)
24             </td>
25             <td>
26                 @Html.ActionLink("Delete", "Delete", new { id = item.ID })
27             </td>
28         </tr>
29     }
30 </table>
31 <div style="float: left; width: 50%">共 @Model.TotalPageCount 页 @Model.TotalItemCount 条记录,当前为第 @Model.CurrentPageIndex 页</div>
32 </br>
33 <div style="float: left; width: 30%">
34     @Ajax.Pager(Model, new PagerOptions
35 {
36     PageIndexParameterName = "id",
37     ShowPageIndexBox = true,
38     PageIndexBoxType = PageIndexBoxType.DropDownList,
39     ShowGoButton = false,
40 }, new MvcAjaxOptions
41 {
42     UpdateTargetId = "MVCpager",
43     DataFormId = "searchForm"
44 }, new { style = "float:right" })
45 </div>

分部视图_ParIndex

这里需要说一下Index页面是默认加载布局页的,我们可以看到布局页已经引用了Jquery1.8,所以index页面就不用再引用了,由于加载布局页所以我们引用Jquery文件时会这样引用:

@section Scripts{@{Html.RegisterMvcPagerScriptResource();}
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
 }

如果没有使用布局页,也就是说当你设置Layout = null;的时候我们直接这样引用

<script type="text/javascript" src="@Url.Content("/Scripts/jquery-1.8.2.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
@{Html.RegisterMvcPagerScriptResource();}

这里要注意一下:@{Html.RegisterMvcPagerScriptResource();}这一句必须放在最后面。不然控制器Request.IsAjaxRequest()一直会是false;到这里我们的无刷新就基本没有什么问题了

现在说一下在搜索时我是使用Ajax.BeginForm来提交表单的,在Index页面代码里可以看到这里提交时设置成了Get提交方式,而且设置了一个ID属性,new RouteValueDictionary { { "id", "searchForm" } },在分部视图_ParIndex页面的分页控件中我们也设置了一个属性 DataFormId = "searchForm",这样当我们点击下一页时搜索的参数也就可以自动带过去了。

时间: 2024-10-16 22:12:58

asp.net MVC4 +MVCpager 无刷新分页的相关文章

asp.net练习②——Paginaton无刷新分页

aspx代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>无刷新分页</title> <link href="c

关于 异步无刷新分页的问题

今天做了  异步无刷新分页 ,之前自己的想法是 异步加载每一页的内容,传入pageSize(页面多大显示条数)和pageIndex(页码),然后查询出数据,放在dataset中,在利用json常用类库,把dataset转化为json对象,传回页面,同是把写好的分页代码也传回页面,当实施的时候遇到了困难,c#一般处理程序无法同时传两个参数到页面. 后来发现了一种方法, System.Web.Script.Serialization.JavaScriptSerializer,序列化,引用了--命名空

MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能)

我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下来我就将做一个模仿淘宝已买到的宝贝功能,不过我的是无刷新分页的. 至于为何要用无刷新分页(局部刷新)呢,我个人觉得有几点原因: 提高用户体验,无刷新分页网页看起来相对静止,滚轮不会跳到上面,加载速度比较快: 减轻网站服务器压力,返回局部页面(其中无需包含样式和脚本)肯定比返回整个页面要来的轻松: 还有个分页的好处就是减轻数据库的压力,返回几行的数据肯定比返回所有

Ajax实现无刷新分页

注:本文中使用到的一些类库在前面文章都能找到源代码,我会在文中指明链接所在,为了缩短文章篇幅,由此带来的阅读不便,敬请谅解. 本文讲解 Ajax 实现无刷新分页.实现原理.代码展示.代码下载. 这里需要说明一些知识: 1.Ajax 无刷新页面的好处:提供良好的客户体验,通过 Ajax 在后台从数据库中取得数据并展示,取缔了等待加载页面而出现的空白状态: 2.那么,Ajax 无刷新页面是运行在动态页面(.PHP)?还是静态页面(.html/.htm/.shtml)?答案是:静态页面: 3.实现原理

无刷新分页 jquery.pagination.js

1.使用插件为 jquery.pagination.js ,如果没有这个js文件的话,我可以给发个. 首先引用 jquery.pagination.js (分页js),跟pagination.css(分页样式css). 点击获取查看这两个文件 2.页面js代码为 <script type="text/javascript"> var pageIndex = 0; //页面索引初始值 var pageSize = 15; //每页显示条数初始化,修改显示条数,修改这里即可 $

phpcms无刷新分页

控制器添加一个函数: 添加一个静态页面ajax_message.html,在页面中添加如下代码: 在要分页的页面(我的是"show"页面)中添加如上图代码: phpcms无刷新分页 2016-05-30 17:17:30 标签:ajaxphpcms分页it教育 控制器添加一个函数 添加一个静态页面ajax_message.html,在页面中添加如下代码:

Ajax 实现无刷新分页

Ajax 实现无刷新分页

smarty+php+ajax 简单无刷新分页

简介 分页,无非就是从数据库中获得我们想查询的数据,再加以处理即可! ① 确定数据总数($count) ② 每页显示数据条数($pageSize) ③ 分多少页($pageCount) ④ 上一页($pagePrev) ⑤ 下一页($pageNext) ⑥ 判断越界问题 ⑦ 偏移量($offset) ⑧ sql语句($sql = "select * from goods limit $offset,$pageSize";) 简单归简单,我们还得考虑实际的应用.例如:如果你正在土豆网看&

无刷新分页代码,jQuery分页完整示例

<!DOCTYPE html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>jQuery分页演示效果</title><script type="text/javascript" src="/ajaxjs/jquery1.3.2.js">&l