使用MvcPager实现Ajax分页
接触ASP.NET MVC的时间不长,这段时间做东西的时候要用到分页,但是普通的分页用户体验不是很好,所以想实现无刷新的分页。
在网上找了好多例子,但是感觉都封装的不好,不小心发现了Webdiyer.MvcPager这个插件,然而实现的过程却不是一帆风顺,所以给大家分享一下:
1.环境:vs2017; .NET Framework 4.5
2.准备工作:
首先,你需要安装Webdiyer.MvcPager插件,很简单,右键项目》管理NuGet程序包》浏览,输入Webdiyer.MvcPager,选择最新版后点击安装,我用的版本是v3.0.1.1
其次,你需要安装Microsoft.jQuery.Unobtrusive.Ajax,和上述步骤一样。传说这个js在mvc3的时候是自带的,反正我在我的项目里没找到。
3.视图:
@{
    ViewBag.Title = "Show";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@using Webdiyer.WebControls.Mvc
@model PagedList<WebApplication1.UserInfo>
<h2>Show</h2>
<div id="userinfo">
    @Html.Partial("_UserinfoList", Model) @*使用局部视图,在第四步中创建*@
</div>
@section scripts
{
    @{Html.RegisterMvcPagerScriptResource();}
}
视图代码中有<div id="userinfo">,这个div一定要有id;
@section scripts
{
@{Html.RegisterMvcPagerScriptResource();}
}
这句话应该是注册MvcPager,必须要有的。
4.创建局部视图:
Views》Shared,右键》添加》视图,这里选择创建为分布视图。

下面是分布视图里的代码:
@using Webdiyer.WebControls.Mvc
@model PagedList<WebApplication1.UserInfo>
<table class="table table-bordered">
<tr>
<th>姓名</th>
<th>性别</th>
</tr>
@foreach(var item in Model)
{
<tr>
<td>@item.RealName</td>
<td>@item.Sex</td>
</tr>
}
</table>
<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("userinfo"))
</div>
这里的@Ajax.Pager***就是分页控件啦,这里需要注意两点:①PageIndexParameterName ,对应Controller中方法的参数②AjaxOptions(a => a.SetUpdateTargetId("userinfo"),SetUpdateTargetId中的参数“userinfo”是视图中div的id
5.Controller:
public ActionResult Show(int id = )
{
using (var db = new JiChuang())
{
var model = db.UserInfo.OrderByDescending(a=>a.ID).ToPagedList(id, );//①必须排序②这里的3是每页显示的条数;
if (Request.IsAjaxRequest())
return PartialView("_UserinfoList", model);
return View(model);
}
}
按照这个步骤走下来就完成了,不过还是建议看一下官方的例子:http://www.webdiyer.com/mvcpager/demos/ajaxpaging/
我只是把我在实现过程中遇到的问题和需要注意的地方跟大家分享一下。
可能遇到的错误:
如果遇到这个错误,在布局页中添加如下代码:
@RenderSection("scripts",required:false)
这段代码对应视图中的
@section scripts
{
@{Html.RegisterMvcPagerScriptResource();}
}
第一次写这种文章,可能逻辑上不清晰或内容上不详细,以后努力!
使用MvcPager实现Ajax分页的更多相关文章
- 使用MVCPager做AJAX分页所走的弯路
		使用MVCPager做AJAX分页所需要注意的地方: 1.版本问题,推荐使用2.0以上,对ajax支持才比较的好了 2.当需要使用页索引输入或下拉框以及使用Ajax分页模式时,必须用Html.Regi ... 
- 使用MVCPager做AJAX分页所需要注意的地方
		1.版本问题,推荐使用2.0以上,对ajax支持才比较的好了 2.当需要使用页索引输入或下拉框以及使用Ajax分页模式时,必须用Html.RegisterMvcPagerScriptResource方 ... 
- MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页  对SEO进行优化的ajax分页 (支持asp.net mvc)
		该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的Upda ... 
- MvcPager 免费开源分页控件3.0版发布!
		MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大 ... 
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
		前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ... 
- ThinkPHP 整合Bootstrap Ajax分页
		ThinkPHP Ajax分页代码 publicfunction index() { $where=array(); $name = I('name'); if(!empty($name)){ $wh ... 
- yii2的分页和ajax分页
		要想使用Yii分页类第一步:在控制器层加载分页类 use yii\data\Pagination;第二步: 使用model层查询数据,并用分分页,限制每页的显示条数$data = User::find ... 
- [js开源组件开发]ajax分页组件
		ajax分页组件 我以平均每一周出一个开源的js组件为目标行动着,虽然每个组件并不是很庞大,它只完成某一个较小部分的工作,但相信,只要有付出,总会得到回报的.这个组件主要完成分页的工作. 这张图里显示 ... 
- MVC - 11(下)jquery.tmpl.js +ajax分页
		继续 mvc-11(上).dto:http://www.cnblogs.com/tangge/p/3840060.html jquery.tmpl.js 下载:http://pan.baidu.com ... 
随机推荐
- VS2017专业版和企业版激活密钥
			VS2017专业版和企业版激活密钥 Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q ... 
- 类型转换之 PropertyEditorSupport类
			这个类可以用于自定义的类型转换, 子类继承这个类之后可以重写子类的方法 ,其中比较重要的是setAsText和setValue方法,setAsText 子自己的方式处理转换,setValue将转换的结 ... 
- jq-animate实现返回顶部效果
			jq-animate实现返回顶部效果: <!doctype html> <html lang="en"> <head> <meta cha ... 
- 关于DOM中的model(将元素转成对象进行操作)
			DOM document (html, xml) object 将文档中的HTML元素转成js的对象 通过ID找到文档的元素转成js对象 var obj = document.getElementBy ... 
- WCF学习——构建第二个WCF应用程序(六)
			一.创建客户端应用程序 若要创建客户端应用程序,你将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据.若要创建客户端应用程序,你将另外添加一个项目,添加对该项 ... 
- Java程序性能优化-读书笔记(一) 单例模式
			单例模式: 目的: 确保系统中一个类只产生一个实例. 好处: 1.对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销. 2.由于new操作的次数减少, ... 
- tomcat+jdk+mysql
			转自 http://www.cnblogs.com/liulinghua90/ ,写的很详细,转来共享私藏 按照下面的步骤一步一步来搭建tomcat+jdk+mysql环境. [Linux环境]- ... 
- Vuejs——v-on
			版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 资料来于官方文档: http://cn.vuejs.org/guide/events.html ... 
- 【linux相识相知】用户及权限管理
			linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管 ... 
- Unity3D拖尾组件在Ui界面下正常显示
			在项目中Canvas下UI添加拖尾效果,会发现Ui完全遮挡住了拖尾. 如果要正常显示通常需要对Canvas进行设置,Render Mode 我这里用的是-Camera模式 其次要对Material 下 ... 
