以往用Ajax来实现无刷新分页,用户一按F5,页数就记不住了,点了一个链接也是同一个问题,再想回退回来,就回到第一页了。上次看到一篇文章,说到window.location.hash的用途,于是萌生了这么一个想法,把这个用来保存Ajax的状态。

大概的实现思路是这样的:页面监听window.onhashchange事件,然后通过Ajax向后台请求分页内容,再替换掉原来的分页结果。当然这个方法要一开始也执行一下,用来应对回退功能。

代码大概如下:

@{
ViewBag.Title = "Index";
} <h2>Index</h2>
<div id="MainDiv"></div> @section scripts{
<script>
function GoToPage(PageIndex) {
$.ajax({
url: '@Url.Action("GetPage")',
data: { Page: PageIndex },
success: function (data) {
$("#MainDiv").html(data);
}
});
} function GetLocationHash() {
//var IsGotoPage = false;
var PageIndex = 1;
var m = window.location.hash.slice(1).split("&");
for (var i = 0; i < m.length; i++) {
var item = m[i];
if (item.indexOf("Page=") > -1) {
PageIndex = item.slice(5);
}
}
GoToPage(PageIndex);
//alert(values);
}
window.onhashchange = GetLocationHash;
GetLocationHash();
</script>
}

Index.cshtml

@model IEnumerable<dynamic>
<table>
<thead>
<tr>
<th>编号</th>
<th>内容</th>
<th>日期</th>
<th>操作</th>
</tr>
</thead>
@foreach (var item in Model)
{
<tr>
<td>
@item.ID
</td>
<td>
@item.Content
</td>
<td>
@item.UpdateDate
</td>
<td>
@Html.ActionLink("查看", "Detail", new { ID = item.ID })
</td>
</tr>
}
</table>
<ul>
@for (int i = 1; i <= ViewBag.PageCount; i++)
{
if (i == ViewBag.PageIndex)
{
<li style="display: inline-block"><span>@i</span></li>
}
else
{
<li style="display: inline-block"><a href="#Page=@i">@i</a></li>
} }
</ul>

GetPage.cshtml

不知道算不算另类的ASP.NET MVC4 Ajax分页的更多相关文章

  1. 基于asp.net的ajax分页

    直接贴代码: <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  2. Asp.Net Mvc4 Ajax提交数据成功弹框后跳转页面

    1.cshtml页面代码 @model Model.UserInfo @{     ViewBag.Title = "Edit"; var options = new AjaxOp ...

  3. AspNet MVC4 教育-28:Asp.Net MVC4 Ajax技术部门四舍五入余速Demo

    A.创建一个Basic项目类型. B.于Models创建一个文件夹: DivModel.cs: using System; using System.Collections.Generic; usin ...

  4. Asp.NET MVC4 + Ajax 实现多文件上传

    本文转自http://www.cnblogs.com/freeliver54/archive/2013/05/15/3079700.html JS部分测试可以,jQuery部分没有测试先留着 HTML ...

  5. 从技术经理的角度算一算,如何可以多快好省的做个app

    [导读]前端时间,一篇“从产品经理的角度算一算,做个app需要多少钱”的文章在网上疯传,可见大家对互联网创业的热情!这次,从一名技术经理的角度再给大家分析一下,如何使用跨平台开发技术为你节省上百万的开 ...

  6. 《java入门第一季》之Date类案例,算一算你的恋爱纪念日

    想算你和你对象谈了多久了,还在用笔算吗,是不是很头疼?写个程序算一算吧!会变得如此简单. import java.text.ParseException; import java.text.Simpl ...

  7. ASP.NET MVC4入门到精通系列目录汇总(转)

    序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码] Unity 2.x依赖注入(控制反转)IOC,对 ...

随机推荐

  1. 【HDOJ】1341 Simple Computers

    注意PC要与31. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 40 ...

  2. http调试工具,linux调试工具

    charles Linux下Web性能压力测试工具http_load linux 下的socket 调试工具 netcat Linux下四款Web服务器压力测试工具(http_load.webbenc ...

  3. android实现类似于支付宝余额快速闪动的效果

    效果如下:   此图片不会动,但实际上是会快速跳动的.  之前看到有支付宝的效果非常牛逼.就是进去看到余额呼噜噜的直接上蹿下跳到具体数字,效果帅,但不知道怎么实现,最近终于知道了. 思路: 首先经常用 ...

  4. Codeforces Round #316 (Div. 2) D、E

    Problem D: 题意:给定一棵n个点树,每个点有一个字母,有m个询问,每次询问某个节点x的子树中所有深度为k的点能否组成一个回文串 分析:一堆点能组成回文串当且仅当数量为奇数的字母不多于1个,显 ...

  5. C++中的基类和派生类

    转载自:http://www.cnblogs.com/sujz/archive/2011/05/12/2044365.html 派生类的继承方式总结: 继承方式 说明 public 基类的public ...

  6. Java CompletableFuture 详解

    Future是Java 5添加的类,用来描述一个异步计算的结果.你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执 ...

  7. xml to json

    // Changes XML to JSONfunction xmlToJson(xml) {    // Create the return object    var obj = {};    i ...

  8. (转)命令行下,用 xcodebuild 生成ipa文件,通过 itms-services 协议安装

    准备工作:已经设置好,xcode中的证书,证书必须是企业级证书,才能通过 itms-services 协议安装 Step 1:  把以下代码保存到一个web目录中,命名为 “auto.plist”,注 ...

  9. Wi-Fi漫游的工作原理

    Wi-Fi网络的一个极其重要的特点就是移动性.例如,一个人可以在使用Wi-Fi电话进行通话或是从服务器上下载大数据量的文件时穿过一幢建筑物.用户设备内部的Wi-Fi无线电可以从一个接入点漫游至另一个接 ...

  10. wpf 中自定义控件及其使用

    主要有3个步骤: 1. 首先创建一个自定义的控件,该控件继承 TextBox namespace EzIntePark.Presentation.Common { /// <summary> ...