PagedList.MVC 应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PagedList.MVC 应用相关的知识,希望对你有一定的参考价值。
1. NuGet 下载 PagedList.MVC
2. View Page
@model PagedList.IPagedList<Libaray.Models.Entities.BookModel> @using PagedList.Mvc; @{ Layout = "~/Views/Shared/_Layout.cshtml"; } <script type="text/javascript"> $(function () { $("#txtSearch").val(@Request.QueryString["keyWords"]); }) </script> <div class="row" style="margin-top:20px;"> <div class="col-sm-2"> @Html.Partial("_AccountNavigator") </div> <div class="col-sm-10"> <div class="row"> <div class="col-sm-6"> <a class="btn btn-sm btn-primary" href="/Book/NewBook">新增</a> </div> <div class="col-sm-6 "> <form id="formSearch" method="get" class="form-horizontal"> <div class="input-group text-right"> @Html.TextBox("keyWords",ViewBag.KeyWords as string, new { @name= "keyWords",@class = "form-control", @placeholder = "书名/作者/描述..." }) <div class="input-group-btn"> <button id="search" class="btn btn-sm btn-primary">查询</button> </div> </div> </form> </div> </div> <hr /> <div class="table-responsive"> <table class="table table-striped table-hover"> <thead> <tr> <th>图书名称</th> <th>作者</th> <th>描述</th> <th>生产日期</th> <th>录入时间</th> <th>Action</th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td>@Html.DisplayFor(m => item.BookName)</td> <td>@Html.DisplayFor(m => item.Author)</td> <td>@Html.DisplayFor(m => item.BookDescription)</td> <td>@Html.DisplayFor(m => item.BookDate)</td> <td>@Html.DisplayFor(m => item.CreatedOn)</td> <td><a href="/Book/[email protected]">编辑</a></td> </tr> } </tbody> </table> @Html.PagedListPager(Model, id => Url.Action("BookList", new { id,keyWords=ViewBag.KeyWords })) </div> </div> </div>
2. Book Controller
// GET: Book public ActionResult BookList(int id=1,int irowCount=25, string keyWords =null) { BookService BookDAL = new BookService(); ViewBag.KeyWords = keyWords; var sResult = BookDAL.SearchBookList(id, irowCount, keyWords); return View(sResult); }
public class BookService:BaseService<BookModel> //此处用到了Cache, 如果不需要则可跳过, { public IPagedList<BookModel> SearchBookList(int id = 1, int irowCount=20, string sKeyWords = null) { List<BookModel> sList = new List<BookModel>(); if (WebCacheHelper.GetCache("BookList") == null) { using (LibContext = new LibarayContext()) { sList = LibContext.BookModels.ToList(); WebCacheHelper.SetCache("BookList", sList); } } else { sList = WebCacheHelper.GetCache("BookList") as List<BookModel>; } if (!string.IsNullOrEmpty(sKeyWords)) { var squery = from bk in sList where bk.Author.Contains(sKeyWords) || bk.BookName.Contains(sKeyWords) || bk.BookDescription.Contains(sKeyWords) select bk; //注意,如果Author, BookName, Description 为null, 此行会报错。 return squery.OrderByDescending(u => u.UpdatedOn).ToPagedList(id, irowCount); } else { return sList.OrderByDescending(m => m.UpdatedOn).ToPagedList(id, irowCount); } } }
WebCacheHelper // 转载别人,具体出处忘记了。
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace Libaray.Common { public class WebCacheHelper { /// <summary> /// 缓存辅助类 /// </summary> /// <summary> /// 获取数据缓存 /// </summary> /// <param name="CacheKey">键</param> public static object GetCache(string CacheKey) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; return objCache[CacheKey]; } /// <summary> /// 设置数据缓存 /// </summary> public static void SetCache(string CacheKey, object objObject) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject); } /// <summary> /// 设置数据缓存 /// </summary> public static void SetCache(string CacheKey, object objObject, TimeSpan Timeout) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject, null, DateTime.MaxValue, Timeout, System.Web.Caching.CacheItemPriority.NotRemovable, null); } /// <summary> /// 设置数据缓存 /// </summary> public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration); } /// <summary> /// 移除指定数据缓存 /// </summary> public static void RemoveAllCache(string CacheKey) { System.Web.Caching.Cache _cache = HttpRuntime.Cache; _cache.Remove(CacheKey); } /// <summary> /// 移除全部缓存 /// </summary> public static void RemoveAllCache() { System.Web.Caching.Cache _cache = HttpRuntime.Cache; IDictionaryEnumerator CacheEnum = _cache.GetEnumerator(); while (CacheEnum.MoveNext()) { _cache.Remove(CacheEnum.Key.ToString()); } } } }
以上是关于PagedList.MVC 应用的主要内容,如果未能解决你的问题,请参考以下文章
csharp 使用X.PagedList.MVC webconfig命名空间进行分页