该示例演示如何使用MvcPager最基本的Ajax分页模式。

使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的UpdateTargetId属性,该属性值即是分页后要通过Ajax来更新的 DOM 元素的 ID。

Ajax.Pager()方法返回AjaxPager对象,您可以通过Ajax.Pager()方法的重载来传递PagerOptions和MvcAjaxOptions参数,也可以通过新的AjaxPager的Options()和AjaxOptions()方法来设置参数值。

http://www.webdiyer.com/mvcpager/demos/ajaxpaging/#id=1

View:

@model PagedList<article>
<div id="articles">
@Html.Partial("_ArticleList",Model)
</div>
@section scripts
{
@{Html.RegisterMvcPagerScriptResource();}
}

_ArticleList.cshtml:

@model PagedList<article>

<div class="text-center">
@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"))
</div>
@{ Html.RenderPartial("_ArticleTable"); }
<div class="text-center">
@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"))
</div>

_ArticleTable.cshtml:

@model PagedList<Article>
<table class="table table-bordered table-striped">
<tr>
<th class="nowrap">序号</th>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.PubDate)
</th>
<th>
@Html.DisplayNameFor(model => model.Author)
</th>
<th>
@Html.DisplayNameFor(model => model.Source)
</th>
</tr>
@{ int i = 0;}
@foreach (var item in Model)
{
<tr>
<td>@(Model.StartItemIndex + i++)</td>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.PubDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Author)
</td>
<td>
@Html.DisplayFor(modelItem => item.Source)
</td>
</tr>
}
</table>

Model:

    public class Article
{
[Display(Name="文章编号")]
public int ID { get; set; }
[Display(Name="文章标题")]
[MaxLength(200)]
public string Title { get; set; }
[Display(Name = "文章内容")]
public string Content { get; set; }
[Display(Name = "发布日期")]
public DateTime PubDate { get; set; }
[Display(Name = "作者")]
[MaxLength(20)]
public string Author { get; set; }
[Display(Name = "文章来源")]
[MaxLength(20)]
public string Source { get; set; }
}

Controller:

        public ActionResult AjaxPaging(int id = 1)
{
using (var db = new DataContext())
{
var model = db.Articles.OrderByDescending(a => a.PubDate).ToPagedList(id, 5);
if (Request.IsAjaxRequest())
return PartialView("_ArticleList", model);
return View(model);
}
}

MvcPager下载

Version 3.0.1:

MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList<T>类和相关方法,经过站长不断完善和改进后推出的比较成熟而且功能强大的ASP.NET MVC分页解决方案。

MvcPager主要功能:

  1. 实现最基本的url route分页功能;
  2. 支持手工输入或选择页索引并对输入的页索引进行有效性验证;
  3. 支持使用jQuery实现Ajax分页,生成的Html代码更精简;
  4. Ajax分页模式下支持在分页过程中通过GET或POST方法提交表单数据,实现查询功能;
  5. Ajax分页模式下支持浏览器历史记录功能(暂不支持IE7及早期版本和Opera浏览器);
  6. Ajax分页模式下,若客户端浏览器不支持或禁用Javascript功能时优雅降级为普通分页
  7. 搜索引擎友好,无论是普通分页还是Ajax分页,搜索引擎都可以直接搜索到所有页面。
  8. 支持最新的ASP.NET MVC 4.0 或更高版本;
  9. 支持IE、Firefox、Opera、Chrome及Safari等常用浏览器;
  10. 支持调用客户端Javascript API跳转到指定页(3.0版新增);
  11. 多语言支持(简体中文、繁体中文和英文)(3.0版新增);

MvcPager 3.0 更新说明

  • 修正了路由定义中对页索引参数使用约束而导致无法为页索引文本或下拉框生成跳链接的bug;
  • 修正了Ajax分页模式下,如果首次加载时数据只有一页且未设置AutoHide=false,则控件不呈现任何有效html标签,导致MvcPager初始化失败以及后续Ajax分页功能失效的bug;
  • 修正了Ajax分页模式下,同一PartialView中包含两个或更多MvcPager且PagerOptions.PageIndexParameterName属性值相同的情况下多次发送相同http请求的问题;
  • MvcAjaxOptions新增EnableHistorySupport属性,用于Ajax分页时启用或禁用浏览器历史记录功能,默认值为true;
  • MvcAjaxOptions新增AllowCache属性,用于Ajax分页时是否允许缓存(默认值为true,禁用缓存仅在GET提交时有效,详情参见jQuery文档);
  • PagerOptions新增DisabledPagerItemTemplate属性,用于设置被禁用的分页元素的html模板;
  • PagerOptions新增OnPageIndexError属性,用于设置页索引出错时要调用的Javascript函数,若未设置则默认用alert弹出错误信息;
  • PagerOptions新增HidePagerItems属性,用于设置是否隐藏所有分页元素,开发者可通过客户端Javascript API自己创建分页元素并用goToPage()方法实现分页跳转;
  • PagerOptions新增ActionName、ControllerName、RouteName、RouteValues和HtmlAttributes属性,即将原HtmlHelper.Pager及AjaxHelper.Pager扩展方法中的actionName,controllerName,routeName,routeValues及htmlAttributes参数并入PagerOptions属性中,相应调整了HtmlHelper.Pager和AjaxHelper.Pager扩展方法重载;
  • PagerOptions的属性PagerItemWrapperFormatString,NumericPagerItemWrapperFormatString,CurrentPagerItemWrapperFormatString,NavigationPagerItemWrapperFormatString,MorePagerItemWrapperFormatString,分别改名为PagerItemTemplate,NumericPagerItemTemplate,CurrentPagerItemTemplate,NavigationPagerItemTemplate,MorePagerItemTemplate
  • PagerOptions.MaxPageIndex属性更名为PagerOptions.MaximumPageNumber;
  • 去除PagerOptions的属性PageIndexBoxWrapperFormatString,GoToPageSectionWrapperFormatString;
  • 去除PagerOptions中页索引框的相关属性ShowPageIndexBox、ShowGoButton、PageIndexBoxType和GoButtonText,新增PageIndexBoxId和GoToButtonId属性,用于指定页索引框和跳转按钮;
  • 去除PagerOptions.PagerItemsSeperator属性,分页按钮之间若需使用空格分隔可以用PagerOptions.PagerItemTemplate="&nbsp;{0}&nbsp;"模板来实现;
  • PagedList.StartRecordIndex 重命名为 PagedList.StartItemIndex;
  • PagedList.EndRecordIndex 重命名为 PagedList.EndItemIndex;
  • 被禁用的分页按钮不再使用超链接(<a disabled="disabled"></a>);
  • HtmlHelper.Pager新增Options方法,AjaxHelper.Pager新增Options和AjaxOptions方法;
  • 新增HtmlHelper.LoadMvcPagerScript方法,用于动态加载MvcPager的客户端脚本库(用该方法注册的脚本必须包含在<script>与</script>标签内),支持通过Ajax加载和初始化MvcPager;
  • 对MvcPager客户端jQuery插件进行重构,添加新功能并做了大量代码优化和完善;
  • 同时支持简体中文、繁体中文和英文等多种语言,不再单独发布中文版和英文版;
  • 新增客户端Javascript API,用于获取分页控件属性及跳转到指定页;
  • 添加更多示例项目,覆盖MvcPager所有功能;
  • 重新制作的全新的在线帮助文档;
  • 添加更多服务器端及客户端Javascript单元测试;
  • 仅支持ASP.NET MVC 4.0及更高版本;

升级说明:

从MvcPager 2.0升级到3.0时,需注意以下事项:

  1. PagerOptions的属性PagerItemWrapperFormatString,NumericPagerItemWrapperFormatString,CurrentPagerItemWrapperFormatString,NavigationPagerItemWrapperFormatString,MorePagerItemWrapperFormatString,分别改名为PagerItemTemplate,NumericPagerItemTemplate,CurrentPagerItemTemplate,NavigationPagerItemTemplate,MorePagerItemTemplate;
  2. PagerOptions.MaxPageIndex属性改名为PagerOptions.MaximumPageNumber;
  3. Pager()方法中原actionName、controllerName、routeName、routeValues和htmlAttributes等参数被并入PagerOptions属性中,设置时请设置PagerOptions属性;
  4. Html.Pager()扩展方法重载从原来十个减为四个,升级时请注意使用合适的重载方法;
  5. Ajax.Pager()扩展方法重载从原来十个减为四个,升级时请注意使用合适的重载方法;
  6. PagerOptions中页索引框的相关属性ShowPageIndexBox、ShowGoButton、PageIndexBoxType和GoButtonText已被去除,启用页索引框时请使用PagerOptions.PageIndexBoxId和PagerOptions.GoToButtonId属性;
  7. 被禁用的分页按钮不再使用超链接,若需使用,请通过新增的PagerOptions.DisabledPagerItemTemplate属性来设置;
  8. PagerOptions.MaxPageIndex属性更名为PagerOptions.MaximumPageNumber;
  9. PagerOptions.PagerItemsSeperator属性已去除,分页按钮之间若需使用空格分隔可以用PagerOptions.PagerItemTemplate="&nbsp;{0}&nbsp;"模板来实现;
  10. 支持多语言,默认为英文,若需使用简体中文版,请在网站根目录的web.config中system.web配置节下添加如下设置:globalization culture="zh-CN" uiCulture="zh-CN"

运行最低需求:

  1. jQuery 1.7及以上版本;(启用页索引输入或选择框、调用Javascript API或使用Ajax分页模式时必需)
  2. ASP.NET MVC 4.0及以上版本;

3.0版已知问题:

  1. Ajax分页模式下,如果用于返回数据的PartialView中包含多个MvcPager且PagerOptions.PageIndexParameterName属性值相同时,只有第一个MvcPager会发起Ajax请求且触发Ajax事件,其后的MvcPager将不再发起请求,因此OnSuccess、OnComplete和OnFailure等ajax事件不会被触发,对应的页索引输入或选择框在分页后也无法绑定事件及填充页索引;
  2. Ajax分页模式下浏览器历史记录支持功能暂不支持IE7以下及Opera浏览器;
  3. Url中值为空的参数在分页后将被从Url中去除;如:/articles/show/2?cls=news&type= 在分页后type参数将丢失,Url变为:/articles/show/3?cls=news
  4. 为AjaxForm使用Ajax分页查询功能时,web.config中的UnobtrusiveJavaScriptEnabled必须设为true(默认),否则会导致分页时数据被加载两次;

MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)的更多相关文章

  1. ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...

  2. MvcPager概述

    MvcPager 概述   MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottG ...

  3. ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  4. asp.net mvc easyui datagrid分页

    提到 asp.net mvc 中的分页,很多是在用aspnetpager,和easyui datagrid结合的分页却不多,本文介绍的是利用easyui 中默认的分页控件,实现asp.net mvc分 ...

  5. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  6. Asp.Net MVC 使用 Ajax

    Asp.Net MVC 使用 Ajax Ajax 简单来说Ajax是一个无需重新加载整个网页的情况下,可以更新局部页面或数据的技术(异步的发送接收数据,不会干扰当前页面). Ajax工作原理 Ajax ...

  7. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第五篇:MVC整合Ajax

    摘要      本文将从完成“输入数据验证”这个功能出发,逐渐展开ASP.NET MVC与Ajax结合的方法.首先,本文将使用ASP.NET MVC提供的同步方式完成数据验证.而后,将分别结合ASP. ...

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

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

  9. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)

    一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...

随机推荐

  1. C# 3DES加密

    最近一个项目中,因为服务端是用的java开发的,客户端是用的C#,由于通信部分采用到了3DES加密,所以做个记录,以备以后需要的时候直接用. 这是对方(java)的加密算法,和网上流传的代码也差不多( ...

  2. 【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor

    参考:http://www.cnblogs.com/guzhongx/p/kindeditor.html 1.下载kindeditor,存放于Content文件夹下 <script src=&q ...

  3. MySql基础整理

    http://hovertree.com/menu/mysql/ use abccs;select * from mytable2 limit 3,4;call sp_name1(1,@nn);sel ...

  4. C#的变迁史 - C# 5.0 之并行编程总结篇

    C# 5.0 搭载于.NET 4.5和VS2012之上. 同步操作既简单又方便,我们平时都用它.但是对于某些情况,使用同步代码会严重影响程序的可响应性,通常来说就是影响程序性能.这些情况下,我们通常是 ...

  5. java中获取文件或文件夹的路径方法

    获取当前类的所在工程路径; 如果不加"/" File f = new File(this.getClass().getResource("").getPath( ...

  6. EasyUI-扩大在DataGrid显示次网格的行

    一.下载并引用:datagrid-detailview.js脚本文件 二.添加UrlInfo控制器,添加Index页面代码如下: @{ Layout = null; } <!DOCTYPE ht ...

  7. 第 17 章 CSS 边框与背景[上]

    学习要点: 1.声明边框 2.边框样式 3.圆角边框 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 边框和背景,通过边框和背景的样式设置,给元素增加更丰富的外观. 一.声明边框 边框的声明有 ...

  8. Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境

    项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...

  9. jinfo命令的使用

    jinfo命令 该命令可以打印出java进程的配置信息:包括jvm参数,系统属性等用法: jinfo [ option ] pid jinfo [ option ] executable core j ...

  10. tomcat jdk servlet websocket版本对应关系

    最近在考虑公司主要基础三方库版本统一和升级的问题,特看了下tomcat jdk servlet websocket版本的对应关系,如下: