1.Model Student.cs
namespace WebApplication14.Models
{
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
2.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>
3.控制器代码 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 = 1; i <= 58; 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 = 3;
List<Student> stus = GetStudents().OrderBy(x => x.Id).Take(3).ToList();
if (ViewData["currentPage"] == null)
{
ViewData["currentPage"] = 1;
}
int currentPage = 1;
int totalPage = (totalCount - 1) / pageSize + 1;
ViewData["stus"] = stus;
int pages = 5;
int end = currentPage + pages - 1 > totalPage ? totalPage : currentPage + pages - 1;
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(),3,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-1>=1?currentPage-1:1,pageSize,totalCount,totalPage,pages));
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>下一页</a>", currentPage +1>totalPage?totalPage:currentPage+1 ,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 - 1) * pageSize).Take(pageSize).ToList();
int end = pageIndex + pages - 1 > totalPage ? totalPage : pageIndex + pages - 1;
for (int i = 0; i < 2*pages+1; i++)
{
if (pageIndex - pages + i >= 1 && 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 - 1 >= 1 ? pageIndex - 1 : 1, pageSize, totalCount, totalPage, pages));
sb.Append(string.Format("<a href='/Home/ProcessPaging?pageIndex={0}&pageSize={1}&totalCount={2}&totalPage={3}&pages={4}'>下一页</a>", pageIndex + 1 > totalPage ? totalPage : pageIndex + 1, pageSize, totalCount, totalPage, pages));
ViewData["pager"] = sb.ToString();
return View("Index");
}
}
}