一、首先创建Model 什么的我就不说了 这里就说分页显示。
二、我们需要用PagedList 来分页 ,因此需要在线安装。我们可以通过程序包管理器控制台输入命令的方式进行安装。
三、创建Controller
MVC开发中有个规则叫做:约定大于配置。即:在创建Controller的时候,类名统一以Controller结尾,所以我们创建一个MoviesController的控制器
看下面的Index 就可以
using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using MvcMovies.Models; using PagedList; using System.Configuration; namespace MvcMovies.Controllers { public class MoviesController : Controller { private DefaultConnection db = new DefaultConnection(); // GET: Movies //public ActionResult Index() //{ // return View(db.Movies.ToList()); //} /// <summary> /// 这里是分页 /// </summary> /// <param name="page"></param> /// <returns></returns> public ViewResult Index(int? page) { var movie = from m in db.Movies select m; int pageNumber = page ?? 1; int pageSize = 5;// 这里是每页的显示数 movie = movie.OrderBy(x => x.ID); IPagedList<Movie> pagelist = movie.ToPagedList(pageNumber, pageSize); return View(pagelist); } // GET: Movies/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } // GET: Movies/Create public ActionResult Create() { return View(); } // POST: Movies/Create // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,Title,ResaleDate,Genre,Price")] Movie movie) { if (ModelState.IsValid) { db.Movies.Add(movie); db.SaveChanges(); return RedirectToAction("Index"); } return View(movie); } // GET: Movies/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } // POST: Movies/Edit/5 // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "ID,Title,ResaleDate,Genre,Price")] Movie movie) { if (ModelState.IsValid) { db.Entry(movie).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(movie); } // GET: Movies/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } // POST: Movies/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { Movie movie = db.Movies.Find(id); db.Movies.Remove(movie); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }
如上代码需要引入PagedList命名空间。
四、 创建View页面
模板要选择LIST
修改View 页面如下
@model PagedList.IPagedList<MvcMovies.Models.Movie> @using PagedList.Mvc @{ ViewBag.Title = "Index"; } <h2>Index</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table class="table"> <tr> <th> @Html.DisplayNameFor(model => model[0].Title) </th> <th> @Html.DisplayNameFor(model => model[0].ResaleDate) </th> <th> @Html.DisplayNameFor(model => model[0].Genre) </th> <th> @Html.DisplayNameFor(model => model[0].Price) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) </td> <td> @Html.DisplayFor(modelItem => item.ResaleDate) </td> <td> @Html.DisplayFor(modelItem => item.Genre) </td> <td> @Html.DisplayFor(modelItem => item.Price) </td> <td> @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | @Html.ActionLink("Details", "Details", new { id=item.ID }) | @Html.ActionLink("Delete", "Delete", new { id=item.ID }) </td> </tr> } <tr> <td colspan="5" class="text-right"> @Html.PagedListPager(Model, page => Url.Action("Index", new { page })) </td> </tr> </table>
如上就完成了基于ASP.NET MVC5分页表格的开发。
如果
如果PagedList 提示有错误 , 记得把bin 文件 添加到项目中.