客車網上售票系統——票務資訊分頁展示(六)
阿新 • • 發佈:2020-07-28
使用者查詢出來的結果顯示之後,由於資料量比較大,因此需要新增對分頁的支援,使用者可以逐頁檢視所有的票務資訊,要顯示分頁資訊,需要給檢視傳遞當前頁碼、頁面數、以及產品總數等方面的資訊,因此首先定義一個檢視模型PagingInfo
public class PagingInfo { public int TotalItems { get; set; } public int ItemsPerPage { get; set; } public int CurrentPage { get; set; } publicView Codeint TotalPages { get { return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage); } } }
有了檢視模型便可以實現Html輔助器方法,在MVC根目錄下新建資料夾,名稱為HtmlHelper,在其中新增PagingHelper.cs類。
public static class PagingHelpers { public static MvcHtmlString PageLinks(thisView CodeHtmlHelper 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()); } }
但是,如果想要在試圖中使用該擴充套件方法,需要引入名稱空間,因為分頁類可能在多個頁面中使用,因此可以在檢視的web.config檔案中新增一條配置資訊
最後還需要將資料放鬆給檢視顯示,因此需要將其與分頁檢視模型封裝為單一的檢視模型類、並在控制器中將其例項化後傳給檢視
public class TicketRecordListViewModel { public IEnumerable<TicketRecord> TicketingRecords { get; set; } public PagingInfo PagingInfo { get; set; } public SearchOption SearchOption { get; set; } }View Code
最終效果如下