视图模型- PagingInfo 类:
public class PagingInfo { public int TotalItems { get; set; } public int ItemsPerPage { get; set; } public int CurrentPage { get; set; } public int TotalPages { get { return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage); } } }
创建 “HtmlHelpers” 文件夹,在 PagingHelper 类中定义 HTML 辅助器方法 PageLinks:
public static class PagingHelpers { /// <summary> /// HTML 的扩展方法,用来生成页面链接 /// </summary> /// <param name="html">第一个参数带“this”,表示这是一个扩展方法</param> /// <param name="pagingInfo">所需的分页信息</param> /// <param name="pageUrl">第3个参数是一个方法,该方法的输入参数是int类型(这里是页码),返回string类型(这里是输出URL)</param> /// <returns></returns> public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl) { StringBuilder result = new StringBuilder(); for (int i = 1; i <= pagingInfo.TotalPages; i++) { TagBuilder tag = new TagBuilder("a"); //添加一个<a>标签 tag.MergeAttribute("href", pageUrl(i)); //标签所指向的页数,第二个参数是一个方法,而方法的参数是当前的i tag.InnerHtml = i.ToString(); //标签显示的文本 if (i == pagingInfo.CurrentPage) { tag.AddCssClass("selected"); //对当前页的<a>标签添加值为selected的class属性 tag.AddCssClass("btn-primary"); } tag.AddCssClass("btn btn-default"); //对所有的<a>标签都添加值为“默认按钮”的class属性 result.Append(tag.ToString()); } return MvcHtmlString.Create(result.ToString()); } }