1. 程式人生 > >顯示頁面鏈接(7.5.1)

顯示頁面鏈接(7.5.1)

info item mat pub 以及 size action get 傳遞

1、添加視圖模型 PagingInfo(WebUI.Models)(這一步不用改,每個項目照用就行)

    創建 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 ); }}    //總頁數(這對於一共生成幾個<a>標簽有用)

2、添加 HTML 輔助器方法(這一步不用改,每個項目照用就行)

    有了視圖模型 PagingInfo 還需要實現 HTML 輔助器方法 “PageLinks”

    (在 WebUI 項目中創建一個 “HtmlHelpers” 文件夾,並添加一個 “PagingHelpers” 類文件——其實這一點都不重要)

    重要的是在創建的類文件裏面定義一個 “HtmlHelper” 類的擴展方法,該方法的名字叫做 “PageLinks”

        public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int,string> pageUrl)

    (這段代碼並不重要,因為你不需要修改,在每個項目中直接用就行)

    需要在視圖中引用該擴展方法所在的命名空間。

3、添加要渲染的視圖的模型數據

    為了更方便的將視圖所需要的所有數據傳遞給視圖,首先將控制器要發送給視圖的所有數據封裝成一個單一的視圖模型類——ProductsListViewModel(對於不同的視圖封裝也不一樣)

    更新控制器中的動作方法,通過 ProductsListViewModel 將產品細節和分頁細節傳遞給視圖

        public ViewResult List(int page = 1)
        {
          ProductsListViewModel model = new ProductsListViewModel
          {
            Products =     ,

            PagingInfo = new PagingInfo
            {
              CurrentPage = page,    //初始值為上面的1,之後等於視圖傳回的值
              ItemsPerPage =   ,
              TotalItems =   .Count
            }
          } ;

          return View(model);    //將一個 ProductsListViewModel 對象作為模型數據傳遞給視圖
        }

4、顯示頁面連接——修改視圖內容

    @model …….WebUI.Models.ProductsListViewModel

    ……

    <div class="btn-group pull-right">

      @Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new { page = x }))

    </div>

顯示頁面鏈接(7.5.1)