ASP.NET MVC 3 直到我膝盖中了一箭【13】MVC3MusicStore筛选
1.~/Views/StoreManager/下更新视图Index
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 | 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 | 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
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: