2012年7月4日星期三

ASP.NET MVC 3 直到我膝盖中了一箭【13】MVC3MusicStore筛选

ASP.NET MVC 3 直到我膝盖中了一箭【13】MVC3MusicStore筛选

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

View Code
  1 @model  PagedList.IPagedList<MVC3MusicStore.Models.Album>  2 @helper Truncate(string input, int length)  3     {  4         if (input.Length <= length)  5         {  6     @input  7         }  8         else  9         { 10     @input.Substring(0, length)<text>...</text> 11  12         } 13 } 14 @{ 15     ViewBag.Title = "Index"; 16 } 17 @using MVC3MusicStore.Helpers 18 <h2> 19     Index</h2> 20 <p> 21     @Html.ActionLink((string)ViewBag.CreateLink, "Create") 22 </p> 23 <p> 24     Show: 25     @if (ViewBag.CurrentFilter != "") 26     { 27         @Html.ActionLink("All", "Index", new 28 { 29     sortOrder = ViewBag.CurrentSortOrder 30 }) 31     } 32     else 33     { 34         @:All 35                                         } 36     &nbsp; | &nbsp; 37     @if (ViewBag.CurrentFilter != "Less") 38     { 39         @Html.ActionLink("Less than 10", "Index", new 40 { 41     filter = "Less", 42     sortOrder = 43         ViewBag.CurrentSortOrder 44 }) 45     } 46     else 47     { 48         @:Less than 10 49                                         } 50     &nbsp; | &nbsp; 51     @if (ViewBag.CurrentFilter != "Greater") 52     { 53         @Html.ActionLink("Greater than 10", "Index", new 54 { 55     filter = "Greater", 56     sortOrder = 57         ViewBag.CurrentSortOrder 58 }) 59     } 60     else 61     { 62         @:Greater than 10 63                                         } 64 </p> 65 @Html.Partial("_Paging") 66 <table> 67     <tr> 68         <th> 69             @Html.ActionLink((string)ViewBag.GenreDisplay, "Index", new { sortOrder = ViewBag.GenreSortParam, filter = ViewBag.CurrentFilter }) 70         </th> 71         <th> 72             @Html.ActionLink((string)ViewBag.ArtistDisplay, "Index", new { sortOrder = ViewBag.ArtistSortParam, filter = ViewBag.CurrentFilter }) 73         </th> 74         <th> 75             @Html.ActionLink((string)ViewBag.TitleDisplay, "Index", new { sortOrder = ViewBag.TitleSortParam, filter = ViewBag.CurrentFilter }) 76         </th> 77         <th> 78             @Html.ActionLink((string)ViewBag.PriceDisplay, "Index", new { sortOrder = ViewBag.PriceSortParam, filter = ViewBag.CurrentFilter }) 79         </th> 80         @*<th> 81             AlbumArtUrl 82         </th>*@ 83         <th> 84         </th> 85     </tr> 86     @foreach (var item in Model) 87     { 88         <tr> 89             <td> 90                 @*@item.GenreId*@ 91                 @Html.DisplayFor(modelItem => item.Genre.Name) 92             </td> 93             <td> 94                 @*@item.ArtistId*@ @*@Html.DisplayFor(modelItem => item.Artist.Name)*@ 95                 @Truncate(item.Artist.Name, 25) 96             </td> 97             <td> 98                 @*@item.Title*@ 99                 @Truncate(item.Title, 25)100             </td>101             <td>102                 @*@String.Format("{0:F}", item.Price)*@103                 @Html.DisplayFor(modelItem => item.Price)104             </td>105             @*            <td>106                 @item.AlbumArtUrl107             </td>*@108             <td>109                 @Html.ActionLink((string)ViewBag.EditLink, "Edit", new { id = item.AlbumId })|110                 @Html.ActionLink((string)ViewBag.DetailsLink, "Details", new { id = item.AlbumId })|111                 @Html.ActionLink((string)ViewBag.DeleteLink, "Delete", new { id = item.AlbumId })112             </td>113         </tr>114     }115 </table>116 @Html.Partial("_Paging")

2.~/Views/Shared/下更新分部视图_Paging

  • First

  • Prev

  • Next

  • Last

3.~/Controllers/下更新控制器StoreManagerController

View Code
 1 public ActionResult Index(string sortOrder, string filter, 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 24             //默认的排序顺序25             if (String.IsNullOrEmpty(sortOrder))26             {27                 sortOrder = "Title desc";28             }29 30             ViewBag.CurrentSortOrder = sortOrder;31             #endregion32 33             #region 过滤器34             var albums = from a in db.Albums select a;35             switch (filter)36             {37                 case "Less":38                     albums = albums.Where(a => a.Price39                     <= 1040                     );41                     break;42                 case "Greater":43                     albums = albums.Where(a => a.Price >44                     10);45                     break;46                 default:47                     // No filter needed48                     break;49             }50             ViewBag.CurrentFilter =51             String.IsNullOrEmpty(filter) ? "" : filter;52             #endregion53 54             //var albums = db.Albums.OrderBy(sortOrder);55             albums = albums.OrderBy(sortOrder);56             int maxRecords = 10;57             int currentPage = page;58             return View(albums.ToPagedList(currentPage, maxRecords));59         }


TAG: