1. 程式人生 > 實用技巧 >客車網上售票系統——票務資訊分頁展示(六)

客車網上售票系統——票務資訊分頁展示(六)

  使用者查詢出來的結果顯示之後,由於資料量比較大,因此需要新增對分頁的支援,使用者可以逐頁檢視所有的票務資訊,要顯示分頁資訊,需要給檢視傳遞當前頁碼、頁面數、以及產品總數等方面的資訊,因此首先定義一個檢視模型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); } } }
View Code

  有了檢視模型便可以實現Html輔助器方法,在MVC根目錄下新建資料夾,名稱為HtmlHelper,在其中新增PagingHelper.cs類。

 public static class PagingHelpers
    {
        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 li
= new TagBuilder("li"); li.AddCssClass("page-item"); TagBuilder tag = new TagBuilder("a"); // Construct an <a> tag tag.MergeAttribute("href", pageUrl(i)); tag.AddCssClass("page-link"); tag.InnerHtml = i.ToString(); if (i == pagingInfo.CurrentPage) li.AddCssClass("active"); li.InnerHtml = tag.ToString(); result.Append(li.ToString()); } return MvcHtmlString.Create(result.ToString()); } }
View Code

  但是,如果想要在試圖中使用該擴充套件方法,需要引入名稱空間,因為分頁類可能在多個頁面中使用,因此可以在檢視的web.config檔案中新增一條配置資訊

  

  最後還需要將資料放鬆給檢視顯示,因此需要將其與分頁檢視模型封裝為單一的檢視模型類、並在控制器中將其例項化後傳給檢視    

 public class TicketRecordListViewModel
    {
        public IEnumerable<TicketRecord> TicketingRecords { get; set; }
        public PagingInfo PagingInfo { get; set; }

        public SearchOption SearchOption { get; set; }
    }
View Code

  最終效果如下