MVC3.0 Razor实现Ajax数据分页

数据分页一只是一个老生常谈的问题,只要是做系统开发,一般都会牵扯到。最新学习了Razor,用到分页功能,分享下如何实现Ajax分页。
1.准备工作
网上有现成的分页工具MVCPager,最新的是1.5版本,综合比较后感觉这个控件还是蛮好的,决定采用
MVCPager源码和Demo:http://mvcpager.codeplex.com/releases/view/64098
源码中采用了Linq,由于自己项目没用Linq,所以对MVCpager稍作了修改,修改后的dll:MVCWeb.rar
其实就改了一个地方,数据类型由IQuery改成IList,加入一个TotalCount(总记录数量)参数
2.实现
首先来个图,吊吊胃口
①Model,没什么好说
using System;
using System.Collections;

/**
* 作者:jackchain

* QQ : 710782046
* Email:ovenjackchain@gmail.com
*/
namespace Model
{
public class comnotices
{
#region 构造函数
public comnotices()
{}
#endregion

#region 属性

/// <summary>自动增长</summary>
public int nid
{
get;
set;
}

/// <summary>信息类别</summary>
public string category
{
get;
set;
}

/// <summary>信息标题</summary>
public string title
{
get;
set;
}

/// <summary>信息内容</summary>
public string infodetails
{
get;
set;
}

/// <summary>发布时间</summary>
public string publishdate
{
get;
set;
}

/// <summary>发布人</summary>
public string publishman
{
get;
set;
}

/// <summary>访问量</summary>
public int hits
{
get;
set;
}

#endregion

#region 获得自增键
private string ReturnAutoID()
{
return "nid";
}
#endregion
}
}

②Controller
[OutputCache(Duration = 300)]
//condition是条件,page是当前页面
public ActionResult Index(string condition = "", int page = 1)
{
if (condition.ToLower() != "all")
condition = " category='" + Server.HtmlDecode(condition.Replace("'", "")) + "' ";
else condition = "";
    //ToPagedList就是修改的MVCpager方法,参数:当前页号,分页大小,总记录数量
//FindAllByPage是自己实现的分页方法,根据条件只取当前页面的数据
PagedList<comnotices> notices = mgr.FindAllByPage(((page - 1) * 20).ToString(), "20", "", condition, 11).ToPagedList(page, 20, int.Parse(mgr.GetTotalCount("", condition)));
if (Request.IsAjaxRequest())
return PartialView("NewsAjaxList", notices);
return View(notices);
}
③View页面
@*这里注意*@
@model Webdiyer.WebControls.Mvc.PagedList<Model.comnotices>

@{
ViewBag.Title = "xxxxxx";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="submain">
<div class="subleft">
.............
</div>
<div class="subright">
.............
@{Html.RenderPartial("NewsAjaxList", Model); }@*这里注意,用于AJAX局部刷新*@
</div>
</div>

④局部视图(NewsAjaxList.cshtml)
@using Webdiyer.WebControls.Mvc
@model PagedList<Model.comnotices>
<div id="CJ_NEWSLIST">
<ul>
@foreach (var news in Model)
{
<li><a href="/News/d@{@news.nid}" title="@news.title">[@news.category]@news.title</a> <span class="newsdate">HITS:@news.hits @news.publishdate</span></li>
}
</ul><br />
@*分页控件显示的地方一定要放在刷新的div里面,不然会出现双重控件*@
<div style="text-align:right;">
@Html.AjaxPager(Model, new PagerOptions() { PageIndexParameterName = "page", ShowDisabledPagerItems = true, AlwaysShowFirstLastPageNumber = true, CssClass = "pages" }, new AjaxOptions { UpdateTargetId = "CJ_NEWSLIST" })
</div>
@*需用样式的分页,去掉css即可*@
<div style="text-align:right;">
@Html.AjaxPager(Model, new PagerOptions() { PageIndexParameterName = "page", ShowDisabledPagerItems = true, AlwaysShowFirstLastPageNumber = true }, new AjaxOptions { UpdateTargetId = "CJ_NEWSLIST" })
</div>
</div>
⑤css样式
/*分页控件样式*/
.pages { color:#000;font-weight:bold; font-size:13px;}
.pages .item{padding: 3px 6px;font-size: 13px;} /*数字页索引样式*/
.pages .cpb {color:red;padding: 1px 6px;font-size: 13px;} /*当前页样式*/
.pages a { text-decoration:none;padding: 0 5px; border: 1px solid #ddd;margin:0 2px; color:#000;font-weight:normal;}
.pages a:hover { background-color: #3666d4; color:#fff;border:1px solid #3666d4; text-decoration:none;font-weight:normal;}
⑥不要忘记应用必要的js库,这里采用的是jquery库
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>

<script type="text/javascript" src=@Url.Content("/Scripts/jquery.unobtrusive-ajax.min.js")></script>

OK至此对于MVC3.0一个按条件分页功能即可实现了,而且是局部刷新的。更多模式你可参考MVCPager的Demo
转载出处:http://www.cnblogs.com/qidian10

转载于:https://blog.51cto.com/harlen/769246

ajax mvc3 razor 分页相关推荐

  1. .net MvcPager+Ajax无刷新分页

    .net  MvcPager+Ajax无刷新分页百度网盘链接: https://pan.baidu.com/s/1QmtBVH_sb4O6pNnEIsB5jw 1.新建Asp.net  Web项目,重 ...

  2. php页面自分页刷新,详解PHP+AJAX无刷新分页实现方法

    PHP+AJAX无刷新分页实现代码详解,最近在看ajax 教程,就想写个简单入门的PHP+AJAX无刷新分页,我们依据ajax开发框架,代码如下: var http_request=false; fu ...

  3. thinkphp ajax 无刷新分页效果的实现

    思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...

  4. ajax + laypage实现分页

    ajax + laypage实现分页 使用laypage实现分页,官网给出的实例如下,由于官网没有从后台获取数据,只是在前端构造了一些数据,在我们实际应用中可能会踩坑,在此做个记录. <!DOC ...

  5. 产品ajax无刷新kesion,科讯商业版中用到的ajax空间与分页函数

    科讯商业版中用到的ajax空间与分页函数 更新时间:2007年09月02日 22:02:32   作者: 科讯sql商业版中用到的ajax空间与分页函数,他们的js代码学习是非常不错的 //ajax  ...

  6. IntelliJ IDEA中ajax开发实现分页查询

    此文章的图片被简书禁止访问了, 可以上简书查看此文章. 链接如下 https://www.jianshu.com/p/1fd6b39e98ac IntelliJ IDEA中ajax开发实现分页查询 文 ...

  7. java ajax无刷分页_简单实现Ajax无刷新分页效果

    Ajax无刷新分页效果,如下代码实现 Ajax无刷新分页效果 function showpage(url) { var xhr = new XMLHttpRequest(); xhr.onreadys ...

  8. asp.net mvc3 Razor引擎中@使用规则小记

    项目中前台用的是asp.net mvc3,Razor引擎(关于Razor的介绍可以参考:http://weblogs.asp.net/scottgu/archive/2010/07/02/introd ...

  9. AJAX+JQUERRY实现分页

    ============== Windows Phone 7手机开发..Net培训.期待与您交流! ============= JQERRY代码如下: var where = "" ...

最新文章

  1. UVA116 单向TSP Unidirectional TSP(多阶段决策问题、输出字典序最小的方案、DAG上DP)
  2. MaxCompute - ODPS重装上阵 第二弹 - 新的基本数据类型与内建函数
  3. 2021-05-10 Matlab短时傅里叶变换和小波变换的时频分析
  4. 【转】android学习日记01--综述
  5. C语言文件操作(四)将txt格式汉字转化为txt格式16进制编码
  6. 华为手机显示解析服务器返回错误,ajax服务器返回错误
  7. mybatis多字段排序_解决mybatis中order by排序无效问题
  8. WordPress根目录(Root)
  9. 【知识图谱系列】多关系异质知识图谱表示学习综述
  10. 使用js调用dsoframer打开本地文档问题
  11. 2021-0(C++)输入一个字符串,判断其是否是回文字符串(回文字符串就是正序与反序是相同的字符串)5-27
  12. unity 控制人物模型移动
  13. java 求方差_java计算方差、标准差(均方差)实例代码
  14. socket 10106 解决方法
  15. 如何下载思博伦测试仪的TestCenter?
  16. 一文了解肠-器官轴,肠好身体好
  17. 知乎上演的“变形计“,资本市场会打几分?
  18. Wireshark如何导出h264码流和h265码流
  19. 普通话测试软件测分准吗,普通话学习测试类 | 普通话测试APP,能做到测试、学习提高两不误吗?...
  20. 微信小程序开发—关于配置服务器域名

热门文章

  1. 活动报名小程序源码/thinkphp后台管理报名小程序源码
  2. 自动秒收录导航php源码
  3. LPVOID是一个没有类型的指针
  4. 如果更改列为自增自段
  5. 什么是Viewport Meta(width详解)及在手机上的应用
  6. CSS3 Flex 弹性布局用法详解
  7. Magento教程 13:在Magento中设定联络表单的收件信箱
  8. 每个Linux用户都应该了解的命令行省时技巧
  9. 3K 万能JQuery弹出层类库
  10. 剑指offer 11.旋转数组的最小数字