ASP.NET MVC 3 直到我膝盖中了一箭【12】MVC3MusicStore分页
1.工具-->库程序包管理器-->管理解决方案的NUGet程序包-->添加程序包PagedList和PagedList.Mvc
2.~/Views/Shared/下添加分部视图_Paging
1 <p> 2 @if (Model.HasPreviousPage) 3 { 4 @Html.ActionLink("<< First", "Index", new 5 { 6 page = 1, 7 sortOrder = ViewBag.CurrentSortOrder 8 }) 9 @Html.Raw(" ");10 @Html.ActionLink("< Prev", "Index", new11 {12 page = Model.PageNumber - 1,13 sortOrder =14 ViewBag.CurrentSortOrder15 })16 }17 else18 {19 20 @:<< First21 @Html.Raw(" ");22 23 @:< Prev24 }25 26 @if (Model.HasNextPage)27 {28 @Html.ActionLink("Next >", "Index", new29 {30 page = Model.PageNumber + 1,31 sortOrder = ViewBag.CurrentSortOrder32 })33 @Html.Raw(" ");34 @Html.ActionLink("Last >>", "Index", new35 {36 page = Model.PageCount,37 sortOrder = ViewBag.CurrentSortOrder38 })39 }40 else41 {42 43 @:Next >44 @Html.Raw(" ")45 46 @:Last >>47 }48 </p>
3.~/Views/StoreManager/下更新视图Index
1 @*1*@ 2 @model PagedList.IPagedList<MVC3MusicStore.Models.Album> 3 @helper Truncate(string input, int length) 4 { 5 if (input.Length <= length) 6 { 7 @input 8 } 9 else10 {11 @input.Substring(0, length)<text>...</text>12 13 }14 }15 @{16 ViewBag.Title = "Index";17 }18 @using MVC3MusicStore.Helpers19 <h2>20 Index</h2>21 <p>22 @Html.ActionLink((string)ViewBag.CreateLink, "Create")23 </p>24 @*2*@25 @Html.Partial("_Paging")26 <table>27 <tr>28 <th>29 @Html.ActionLink((string)ViewBag.GenreDisplay, "Index", new { sortOrder = ViewBag.GenreSortParam })30 </th>31 <th>32 @Html.ActionLink((string)ViewBag.ArtistDisplay, "Index", new { sortOrder = ViewBag.ArtistSortParam })33 </th>34 <th>35 @Html.ActionLink((string)ViewBag.TitleDisplay, "Index", new { sortOrder = ViewBag.TitleSortParam })36 </th>37 <th>38 @Html.ActionLink((string)ViewBag.PriceDisplay, "Index", new { sortOrder = ViewBag.PriceSortParam })39 </th>40 @*<th>41 AlbumArtUrl42 </th>*@43 <th>44 </th>45 </tr>46 @foreach (var item in Model)47 {48 <tr>49 <td>50 @*@item.GenreId*@51 @Html.DisplayFor(modelItem => item.Genre.Name)52 </td>53 <td>54 @*@item.ArtistId*@ @*@Html.DisplayFor(modelItem => item.Artist.Name)*@55 @Truncate(item.Artist.Name, 25)56 </td>57 <td>58 @*@item.Title*@59 @Truncate(item.Title, 25)60 </td>61 <td>62 @*@String.Format("{0:F}", item.Price)*@63 @Html.DisplayFor(modelItem => item.Price)64 </td>65 @* <td>66 @item.AlbumArtUrl67 </td>*@68 <td>69 @Html.ActionLink((string)ViewBag.EditLink, "Edit", new { id = item.AlbumId })|70 @Html.ActionLink((string)ViewBag.DetailsLink, "Details", new { id = item.AlbumId })|71 @Html.ActionLink((string)ViewBag.DeleteLink, "Delete", new { id = item.AlbumId })72 </td>73 </tr>74 }75 </table>76 @*3*@77 @Html.Partial("_Paging")
4.~/Controllers/下更新控制器StoreManagerController
1 public ActionResult Index(string sortOrder, int page = 1) 2 { 3 //return View(); 4 //var albums = db.Albums.Include("Genre").Include("Artist"); 5 //return View(albums.ToList()); 6 7 #region ViewBag资源 8 ViewBag.CreateLink = Resource.CreateLink; 9 ViewBag.EditLink = Resource.EditLink;10 ViewBag.DetailsLink = Resource.DetailsLink;11 ViewBag.DeleteLink = Resource.DeleteLink;12 ViewBag.GenreDisplay = Resource.GenreDisplay;13 ViewBag.ArtistDisplay = Resource.ArtistDisplay;14 ViewBag.TitleDisplay = Resource.TitleDisplay;15 ViewBag.PriceDisplay = Resource.PriceDisplay;16 #endregion17 18 #region ViewBag排序PARAMS19 ViewBag.GenreSortParam = (sortOrder == "Genre.Name") ? "Genre.Name desc" : "Genre.Name";20 ViewBag.ArtistSortParam = (sortOrder == "Artist.Name") ? "Artist.Name desc" : "Artist.Name";21 ViewBag.TitleSortParam = (sortOrder == "Title") ? "Title desc" : "Title";22 ViewBag.PriceSortParam = (sortOrder == "Price") ? "Price desc" : "Price";23 #endregion24 25 //默认的排序顺序26 if (String.IsNullOrEmpty(sortOrder))27 {28 sortOrder = "Title desc";29 }30 31 ViewBag.CurrentSortOrder = sortOrder;32 33 var albums = db.Albums.OrderBy(sortOrder);34 int maxRecords = 10;35 int currentPage = page;36 return View(albums.ToPagedList(currentPage, maxRecords));37 }
TAG: