2012年7月3日星期二

ASP.NET MVC 3 直到我膝盖中了一箭【12】MVC3MusicStore分页

ASP.NET MVC 3 直到我膝盖中了一箭【12】MVC3MusicStore分页

1.工具-->库程序包管理器-->管理解决方案的NUGet程序包-->添加程序包PagedList和PagedList.Mvc

2.~/Views/Shared/下添加分部视图_Paging

View Code
 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("&nbsp;");10         @Html.ActionLink("< Prev", "Index", new11 {12     page = Model.PageNumber - 1,13     sortOrder =14         ViewBag.CurrentSortOrder15 })16     }17     else18     {19 20         @:<< First21         @Html.Raw("&nbsp;");22 23         @:< Prev24                 }25     &nbsp;&nbsp;26     @if (Model.HasNextPage)27     {28         @Html.ActionLink("Next >", "Index", new29 {30     page = Model.PageNumber + 1,31     sortOrder = ViewBag.CurrentSortOrder32 })33         @Html.Raw("&nbsp;");34         @Html.ActionLink("Last >>", "Index", new35 {36     page = Model.PageCount,37     sortOrder = ViewBag.CurrentSortOrder38 })39     }40     else41     {42 43         @:Next >44         @Html.Raw("&nbsp;")45 46         @:Last >>47                 }48 </p>

3.~/Views/StoreManager/下更新视图Index

View Code
 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

View Code
 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: