.Model Student.cs
namespace WebApplication14.Models
{
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
} .views Index.cshtml @{
Layout = null;
} <!DOCTYPE html>
@model WebApplication14.Models.Student
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div> <table id="table1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th> </tr>
@foreach (var stu in ViewData["stus"] as List<WebApplication14.Models.Student>)
{
<tr>
<td>@stu.Id</td>
<td>@stu.Name</td>
<td>@stu.Age</td>
</tr> }
</table>
@MvcHtmlString.Create(ViewData["pager"] as string); </table>
</div>
</body>
</html> .控制器代码 Controllers using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication14.Models; namespace WebApplication14.Controllers
{
public class HomeController : Controller
{
public List<Student> GetStudents()
{
List<Student> stus = new List<Student>();
for (int i = ; i <= ; i++)
{
stus.Add(new Student() { Id = i, Name = i.ToString(), Age = i });
}
return stus;
}
[HttpGet]
public ActionResult Index()
{ System.Text.StringBuilder sb = new System.Text.StringBuilder();
int totalCount = GetStudents().Count;
int pageSize = ;
List<Student> stus = GetStudents().OrderBy(x => x.Id).Take().ToList();
if (ViewData["currentPage"] == null)
{
ViewData["currentPage"] = ;
}
int currentPage = ;
int totalPage = (totalCount - ) / pageSize + ;
ViewData["stus"] = stus;
int pages = ;
int end = currentPage + pages - > totalPage ? totalPage : currentPage + pages - ;
for (int i = currentPage; i <=end ; i++)
{
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>{5}</a>", i.ToString(),,totalCount,totalPage,pages, i.ToString())); }
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>上一页</a>",currentPage->=?currentPage-:,pageSize,totalCount,totalPage,pages));
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>下一页</a>", currentPage +>totalPage?totalPage:currentPage+ ,pageSize, totalCount,totalPage,pages));
ViewData["pager"] = sb.ToString();
return View(); } public ActionResult ProcessPaging(int pageIndex,int pageSize,int totalCount,int totalPage,int pages)
{
var stus = GetStudents();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
ViewData["stus"] = stus.Skip((pageIndex - ) * pageSize).Take(pageSize).ToList();
int end = pageIndex + pages - > totalPage ? totalPage : pageIndex + pages - ;
for (int i = ; i < *pages+; i++)
{
if (pageIndex - pages + i >= && pageIndex - pages + i <= totalPage)
{
int cur = pageIndex - pages + i;
if (cur == pageIndex)
{
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'><font color='red'>{5}</font></a>", cur.ToString(), pageSize, totalCount, totalPage, pages, cur.ToString()));
}
else
{
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>{5}</a>", cur.ToString(), pageSize, totalCount, totalPage, pages, cur.ToString()));
}
}
} sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>上一页</a>", pageIndex - >= ? pageIndex - : , pageSize, totalCount, totalPage, pages));
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>下一页</a>", pageIndex + > totalPage ? totalPage : pageIndex + , pageSize, totalCount, totalPage, pages));
ViewData["pager"] = sb.ToString();
return View("Index");
} }
}

符合mvc思维的分页思想的更多相关文章

  1. ASP.NET MVC 简单的分页思想与实现

    首先我们通过VS创建一个空的基于Razor视图引擎的ASP.NET MVC3 Web应用程序,命名为JohnConnor.Web 对创建过程或Razor不太了解的看官,请移步 ASP.NET MVC ...

  2. ASP.NET MVC 数据分页思想及解决方案代码

    作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MV ...

  3. ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender

    (原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人 ...

  4. ASP.NET MVC利用PagedList分页(一)

    前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList.PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行 ...

  5. asp.net mvc easyui datagrid分页

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

  6. Android 仿淘宝头条竖直跑马灯式新闻标题及“分页思想

    在淘宝App的首页中间位置,有一块小小的地方在不知疲倦地循坏滚动着头条标题(见下图的红框区域),这样的设计无疑能够在有限的手机屏幕上展示更丰富的内容.而实现这一功能需要用到的控件就是我在上一篇文章中提 ...

  7. asp.net mvc多条件+分页查询解决方案

    开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...

  8. MVC无刷新分页

    MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能)   我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下 ...

  9. MVC中用Jpaginate分页

    MVC中用Jpaginate分页 So easy!(兼容ie家族)   看过几款分页插件,觉得Jpaginate比较简约,样式也比较容易的定制,而且体验也比较好,支持鼠标滑动效果.先上效果图: 整个过 ...

随机推荐

  1. Django Rest Framework - Could not resolve URL for hyperlinked relationship using view name “user-detail”

    要把跟当前表相关的viewset定义出来 http://stackoverflow.com/questions/20550598/django-rest-framework-could-not-res ...

  2. TIME_WAIT过多及解决

         最近用http_load做压测,跑出来一大串“Cannot assign requested address ”的错误,查了一下,是TIME_WAIT过多导致的.因为短时间内有太多连接,所以 ...

  3. 几个ADB常用命令

    http://blog.163.com/ymguan@yeah/blog/static/14007287220133149477594/ 1. 显示当前运行的全部模拟器:    adb devices ...

  4. ubantu 安装tree命令

    前提:必须安装好VMware tools 在linux系统中找不到tree这个命令时,需要安装,如ubuntu用下面的命令就可以安装tree这个命令工具,其他linux系统类似. 1 sudo apt ...

  5. js判断客户端是pc还是手机

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...

  6. CSS冷门但有用的知识整合

    1. 滚动条样式设置 The ::-webkit-scrollbar CSS pseudo-element(伪元素) affects the style of the scrollbar of an ...

  7. MSSQL使用sqlbulkcopy批量插入数据

    具体代码如下: /// <summary> /// 批量插入数据到BayonetZipFailedPic表 /// </summary> /// <param name= ...

  8. asp.net数据分页方法

    /// <summary> /// 数据分页方法 /// </summary> /// <param name="PageIndex">当前页& ...

  9. redis事务和redis集群

    一.事务(相对mysql来说简单) 1. 比较 ①:mysql ----->start trantation ---->普通sql ------->回滚rollback------& ...

  10. 【转】Jmeter Http请求界面解释

    一个HTTP请求有着许多的配置参数,下面将详细介绍: 名称:本属性用于标识一个取样器,建议使用一个有意义的名称. 注释:对于测试没有任何作用,仅用户记录用户可读的注释信息. 服务器名称或IP :HTT ...