视图模型- 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());
        }
    }
生成页面链接的 Html.PageLinks 方法

相关文章:

  • 2021-11-13
  • 2021-09-27
  • 2021-09-05
  • 2022-12-23
  • 2021-09-11
猜你喜欢
  • 2021-07-18
  • 2021-11-07
  • 2022-12-23
  • 2021-11-13
  • 2021-04-15
  • 2021-07-27
  • 2021-09-10
相关资源
相似解决方案