杨涛老师插件地址:http://www.webdiyer.com/mvcpager

杨涛老师网站上示例写的很详细了,参考他的示例和帮助文档就可以运用的很好了,有经验的同学可以直接参考官方示例。

一、标准的ajax分页

1、新建一个空的MVC项目

2、搜索安装 MvcPager

3、控制器中添加方法
 1         /// <summary 
2  /// 单个分页 
3  /// </summary>

4 /// <returns></returns>
5 [HttpGet]
6 public ActionResult SinglePage(int id = 1)
7 {
8 List<Article> articles = new List<Article>();
9 for (int i = 0; i < 10; i++)
10 {
11 Article a = new Article();
12 a.ID = id;
13 a.Title = "Title " + id;
14 a.Content = "Content " + id;
15 articles.Add(a);
16 }
//注:看官网问题留言有部分同学在看了杨老师demo之后不清楚如何根据条件去数据库取对应页的数据,而不是将集合数据取出来再进行分页,其实只要把源码下载下来看一下里面方法的实现就好了。
17 PagedList<Article> model = new PagedList<Article>(articles, id, 10, 100);//articles-当前页记录、id-页码、10-每页记录条数、100-总记录条数
18 if (Request.IsAjaxRequest())
19 return PartialView("_ArticleList", model);
20 return View(model);
21 }
 
4、添加视图 SinglePage.cshtml、分部视图 _ArticleList.cshtml、_ArticleTable.cshtnl
SinglePage.cshtml
 1 @using Webdiyer.WebControls.Mvc
2 @model PagedList<MvcPagerTest.Models.Article>
3
4 <div id="articles">
5 @Html.Partial("_ArticleList", Model)
6 </div>
7 @section scripts
8 {
9 @{Html.RegisterMvcPagerScriptResource();}
10 }
_ArticleList.cshtml
 1 @using Webdiyer.WebControls.Mvc
2 @model PagedList<MvcPagerTest.Models.Article>
3
4 <div class="text-center">
5 @Ajax.Pager(Model, new PagerOptions { PageIndexParameterName = "id", ContainerTagName = "ul", CssClass = "pagination", CurrentPagerItemTemplate = "<li class=\"active\"><a href=\"#\">{0}</a></li>", DisabledPagerItemTemplate = "<li class=\"disabled\"><a>{0}</a></li>", PagerItemTemplate = "<li>{0}</li>" }).AjaxOptions(a => a.SetUpdateTargetId("articles"))
6 </div>
7
8 @{ Html.RenderPartial("_ArticleTable"); }
9
10 <div class="text-center">
11 @Ajax.Pager(Model, new PagerOptions { AlwaysShowFirstLastPageNumber = true, PageIndexParameterName = "id", ContainerTagName = "ul", CssClass = "pagination", CurrentPagerItemTemplate = "<li class=\"active\"><a href=\"#\">{0}</a></li>", DisabledPagerItemTemplate = "<li class=\"disabled\"><a>{0}</a></li>", PagerItemTemplate = "<li>{0}</li>" }).AjaxOptions(a => a.SetUpdateTargetId("articles"))
12 </div>
_ArticleTable.cshtnl
 1 @using Webdiyer.WebControls.Mvc
2 @model PagedList<MvcPagerTest.Models.Article>
3
4 <table class="table table-bordered table-striped">
5 <tr>
6 <th class="nowrap">序号</th>
7 <th>
8 @Html.DisplayNameFor(model => model.Title)
9 </th>
10 <th>
11 @Html.DisplayNameFor(model => model.Content)
12 </th>
13 </tr>
14 @{ int i = 0;}
15 @foreach (var item in Model)
16 {
17 <tr>
18 <td>@(Model.StartItemIndex + i++)</td>
19 <td>
20 @Html.DisplayFor(modelItem => item.Title)
21 </td>
22 <td>
23 @Html.DisplayFor(modelItem => item.Content)
24 </td>
25 </tr>
26 }
27 </table>
 
5、运行
运行程序会出现错误:以下各节已定义,但尚未为布局页“~/Views/Shared/_Layout.cshtml”呈现:“Scripts”。
解决方法:在_Layout.cshtml中添加代码 @RenderSection("scripts", required: false)
 
运行结果:

二、多个ajax分页

多个ajax分页和单个ajax分页类似,这里要注意的是:

1、不同的分页控件要定义不同页码参数名称(如下:第一个定义 为pageIndex,第二个定义为 id)

2、后台通过自定义参数来区分获取的是哪个分页的数据,这里通过AddRouteValue("param","value")来添加

1
2
//PageIndexParameterName设置页码参数名称; @Ajax.Pager(Model).Options(o=>o.AddRouteValue("target","blog1"))生成分页链接的路由的值。
@Ajax.Pager(Model, new PagerOptions { AlwaysShowFirstLastPageNumber = true, PageIndexParameterName = "id", ContainerTagName = "ul", CssClass = "pagination", CurrentPagerItemTemplate = "<li class=\"active\"><a href=\"#\">{0}</a></li>", DisabledPagerItemTemplate = "<li class=\"disabled\"><a>{0}</a></li>", PagerItemTemplate = "<li>{0}</li>" }).Options(o => o.AddRouteValue("target""blog2")).AjaxOptions(a => a.SetUpdateTargetId("blog2s"))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/// <summary>
/// 多个分页
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult MultiPage(int pageIndex = 1,int id = 1)
{
    if (Request.IsAjaxRequest())
    {
        string target = Request.QueryString["target"];//通过target来区分获取的是哪个分页数据。
        if (target == "blog1")
        {
            return PartialView("_Blog1List"new PagedList<Blog1>(GetBlog1s(pageIndex), pageIndex, 10, 100));//页码参数名称为pageIndex
        }
        if (target == "blog2")
        {
            return PartialView("_Blog2List"new PagedList<Blog1>(GetBlog1s(id), id, 10, 100));//页码参数名称为id
        }
    }
 
    Blog blog = new Blog();
    blog.Blog1s = new PagedList<Blog1>(GetBlog1s(pageIndex), pageIndex,10, 100);
    blog.Blog2s = new PagedList<Blog2>(GetBlog2s(id), id, 10, 100);
    return View(blog);
}
 
public List<Blog1> GetBlog1s(int pageIndex)
{
    List<Blog1> blog1s = new List<Blog1>();
    for (int i = 0; i < 10;i++)
    {
        blog1s.Add(new Blog1(pageIndex, "name1-" + pageIndex, "content1-"+ pageIndex));
    }
    return blog1s;
}
 
public List<Blog2> GetBlog2s(int id)
{
    List<Blog2> blog2s = new List<Blog2>();
    for (int i = 0; i < 10; i++)
    {
        blog2s.Add(new Blog2(id, "name2-" + id, "content2-" + id));
    }
    return blog2s;
}

示例地址(vs2015):https://files.cnblogs.com/files/zhaorong0912/MvcPagerDemo.rar

最后:文章旨在记录自己的所学所用,如有错误,希望各位能及时指出,本人不胜感激!

杨涛老师MvcPager示例的更多相关文章

  1. 跟开涛老师学shiro -- 编码/加密

    在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码.比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储. 5.1 编码/解码 Shir ...

  2. 跟开涛老师学shiro -- 授权

    授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permission).角 ...

  3. 杨校老师课堂之JavaScript右下角广告弹框教程

    案例制作思路: 1.先制作界面 添加一个盒子包含一个按钮,使盒子绝对定位在右上角 添加一个大盒子,同理,将盒子居于左下角:其中内部包含一个顶端盒子和底部盒子 顶端盒子因为是属于大盒子内部的存在,所以宽 ...

  4. C# - 杨涛分页控件AspNetPager

    http://www.webdiyer.com/downloads/ 前台 <%@ Page Language="C#" AutoEventWireup="true ...

  5. 跟开涛老师学shiro -- INI配置

    之前章节我们已经接触过一些INI配置规则了,如果大家使用过如spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即可以理解为是一个IoC/DI容器,但是区别在于它从一个根 ...

  6. 跟开涛老师学shiro -- 身份验证

    身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...

  7. 跟开涛老师学shiro -- shiro简介

    1.1  简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Securi ...

  8. 传智 杨中科老师 ASP.NET 笔记

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

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

随机推荐

  1. [转]bootstrapTable refresh 方法使用简单举例

    原文地址:https://blog.csdn.net/lanyang123456/article/details/55805478 本文就bootstrapTable refresh 方法如何传递参数 ...

  2. 联通GWH-01路由猫超级用户登录方法

    . . . . . 今天回老家,家里用的是联通GWH-01路由猫,上海贝尔的.用路由器背面说明上面写的user用户登录之后,发现只能查看却无法设置.为了开启无线路由功能,只好在网上查找超级用户,是cu ...

  3. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...

  4. redis主从配置(docker实现)

    一.docker新建两个redis服务端,并分别设置端口为6379和6380 命令如下: docker run -p : -d --name redis-server docker.io/redis: ...

  5. ubuntu eclipse&JDK

    1. 下载jre,eclipse,cdt 其中jre是java运行环境,eclipse需要先装jre,才可能运行,cdt是在eclipse中运行c\c++程序的插件. 1.1 下载jre 网址是:ja ...

  6. 关于Unity中旧版动画系统的使用

    Unity在5.X以后,有一个旧版的动画系统和新版的动画系统. 新版的动画系统是使用Unity动画编辑器来调的,调动画和控制动画 旧版的动画系统是用其他的第三方软件调好后导出到一个FBX文件里面,就是 ...

  7. Mac 系统上安装Protocol buffer

    1. cd /Software/protobuf-2.5.0 2.sudo ./configure --prefix=$/Software/protobuf-2.5.0 3.sudo make 4.s ...

  8. python新模块:secrets模块(为账户密码)

    默认我们会使用random模块, 而secrets模块用来产生强加密的随机数, 例如账号认证 import secrets import string characters = string.asci ...

  9. Android N: jack server failed

    在服务器上编译Android N.出现如下错误. Android N 编译时会使用到 jack server,同一台服务器上,各个用户都需要为 jack server 指定不同的端口,否则会产生端口冲 ...

  10. e559. 创建窗口

    A frame is a component container that displays its contents in a top-level window with a title bar a ...