MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)
该示例演示如何使用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主要功能:
- 实现最基本的url route分页功能;
- 支持手工输入或选择页索引并对输入的页索引进行有效性验证;
- 支持使用jQuery实现Ajax分页,生成的Html代码更精简;
- Ajax分页模式下支持在分页过程中通过GET或POST方法提交表单数据,实现查询功能;
- Ajax分页模式下支持浏览器历史记录功能(暂不支持IE7及早期版本和Opera浏览器);
- Ajax分页模式下,若客户端浏览器不支持或禁用Javascript功能时优雅降级为普通分页
- 搜索引擎友好,无论是普通分页还是Ajax分页,搜索引擎都可以直接搜索到所有页面。
- 支持最新的ASP.NET MVC 4.0 或更高版本;
- 支持IE、Firefox、Opera、Chrome及Safari等常用浏览器;
- 支持调用客户端Javascript API跳转到指定页(3.0版新增);
- 多语言支持(简体中文、繁体中文和英文)(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=" {0} "模板来实现;
- 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时,需注意以下事项:
- PagerOptions的属性PagerItemWrapperFormatString,NumericPagerItemWrapperFormatString,CurrentPagerItemWrapperFormatString,NavigationPagerItemWrapperFormatString,MorePagerItemWrapperFormatString,分别改名为PagerItemTemplate,NumericPagerItemTemplate,CurrentPagerItemTemplate,NavigationPagerItemTemplate,MorePagerItemTemplate;
- PagerOptions.MaxPageIndex属性改名为PagerOptions.MaximumPageNumber;
- Pager()方法中原actionName、controllerName、routeName、routeValues和htmlAttributes等参数被并入PagerOptions属性中,设置时请设置PagerOptions属性;
- Html.Pager()扩展方法重载从原来十个减为四个,升级时请注意使用合适的重载方法;
- Ajax.Pager()扩展方法重载从原来十个减为四个,升级时请注意使用合适的重载方法;
- PagerOptions中页索引框的相关属性ShowPageIndexBox、ShowGoButton、PageIndexBoxType和GoButtonText已被去除,启用页索引框时请使用PagerOptions.PageIndexBoxId和PagerOptions.GoToButtonId属性;
- 被禁用的分页按钮不再使用超链接,若需使用,请通过新增的PagerOptions.DisabledPagerItemTemplate属性来设置;
- PagerOptions.MaxPageIndex属性更名为PagerOptions.MaximumPageNumber;
- PagerOptions.PagerItemsSeperator属性已去除,分页按钮之间若需使用空格分隔可以用PagerOptions.PagerItemTemplate=" {0} "模板来实现;
- 支持多语言,默认为英文,若需使用简体中文版,请在网站根目录的web.config中system.web配置节下添加如下设置:globalization culture="zh-CN" uiCulture="zh-CN"
运行最低需求:
- jQuery 1.7及以上版本;(启用页索引输入或选择框、调用Javascript API或使用Ajax分页模式时必需)
- ASP.NET MVC 4.0及以上版本;
3.0版已知问题:
- Ajax分页模式下,如果用于返回数据的PartialView中包含多个MvcPager且PagerOptions.PageIndexParameterName属性值相同时,只有第一个MvcPager会发起Ajax请求且触发Ajax事件,其后的MvcPager将不再发起请求,因此OnSuccess、OnComplete和OnFailure等ajax事件不会被触发,对应的页索引输入或选择框在分页后也无法绑定事件及填充页索引;
- Ajax分页模式下浏览器历史记录支持功能暂不支持IE7以下及Opera浏览器;
- Url中值为空的参数在分页后将被从Url中去除;如:/articles/show/2?cls=news&type= 在分页后type参数将丢失,Url变为:/articles/show/3?cls=news
- 为AjaxForm使用Ajax分页查询功能时,web.config中的UnobtrusiveJavaScriptEnabled必须设为true(默认),否则会导致分页时数据被加载两次;
MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)的更多相关文章
- ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...
- MvcPager概述
MvcPager 概述 MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottG ...
- ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- asp.net mvc easyui datagrid分页
提到 asp.net mvc 中的分页,很多是在用aspnetpager,和easyui datagrid结合的分页却不多,本文介绍的是利用easyui 中默认的分页控件,实现asp.net mvc分 ...
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开
ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...
- Asp.Net MVC 使用 Ajax
Asp.Net MVC 使用 Ajax Ajax 简单来说Ajax是一个无需重新加载整个网页的情况下,可以更新局部页面或数据的技术(异步的发送接收数据,不会干扰当前页面). Ajax工作原理 Ajax ...
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第五篇:MVC整合Ajax
摘要 本文将从完成“输入数据验证”这个功能出发,逐渐展开ASP.NET MVC与Ajax结合的方法.首先,本文将使用ASP.NET MVC提供的同步方式完成数据验证.而后,将分别结合ASP. ...
- ASP.NET MVC中使用MvcPager异步分页+在分页中复选框下一页上一页也保持选中
ASP.NET MVC 分页使用的是作者杨涛的MvcPager分页控件 地址:http://www.webdiyer.com/mvcpager/demos/ajaxpaging/ 这个分页控件在里面 ...
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)
一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...
随机推荐
- 参考例子,学习Func<T, TResult>委托
这些天,开发ASP.NET MVC,其间有查找资料,发现一个全新的Func<T, TResult> 委托.让我们在开发时,节省与简化很多. 在开发过程中,我们需要把一个泛型List< ...
- Web API接口设计经验总结
在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winfo ...
- .Net中的并行编程-1.路线图
最近半年一直研究用.net进行并行程序的开发与设计,再研究的过程中颇有收获,所以画了一个图总结了一下并行编程的基础知识点,这些知识点是并行编程的基础,有助于我们编程高性能的程序,里面的某些结构实现机制 ...
- MVP 2015社区大讲堂之:在ASP.NET应用中执行后台任务
昨天下午,在微软的MVP 2015社区大讲堂上给大家分享了一个题目:在ASP.NET应用中执行后台任务.这是一点都不高大上,并且还有点土气的技术分享.不过我相信很多人都遇到过这样的问题. 虽然是一个很 ...
- hibernate----1-1-----两表关联属性放在另一个表里面
package com.ij34.dao; import javax.persistence.*; @Entity @Table(name="Address_inf") publi ...
- Git tag 给当前分支打标签
原文已经找不到出处,重新整理格式,仅作个人收藏! 标签(Tag)可以针对某一时间点的版本做标记,常用于版本发布. 列出tag $ git tag # 在控制台打印出当前仓库的所有tag $ git t ...
- php PDO调用带有out参数的存储过程(原创)
这几天比较闲学了下PHP, 开发工具zendphp,server下的一个集成工具WampServer. 感觉php实现一个功能写的代码比asp.net java都少,特别是数据库访问这块,如果是asp ...
- HDU 4745---Two Rabbits(区间DP)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=4745 题意:两只兔子,在n块围成一个环形的石头上跳跃,每块石头有一个权值ai,一只从左往右 ...
- [moka同学笔记]二、Yii2.0课程笔记(魏曦老师教程)
一.在标签tags的model中 //使用正则表达式,把标签字符串转换成数组 public static function string2array($tags) { return preg_spli ...
- TestNG 三 测试方法
一.设置参数 测试方法是可以带有参数的.每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Parameters向方法传递正确的参数. 设置方式有两种方法:使用testng.xml或 ...