<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      samesite


      【譯】MVC3 20個秘方-(9)在結果中篩選

      問題

      當排序和分頁都不夠幫用戶去找到他們想要的結果時,另外一種幫助用戶找到他們想要的結果的方式是根據特殊的規則過濾。

      解決方案

      添加新的links 允許使用預先的條件去過濾并且使用LINQ類庫去在數據中過濾。    

      討論

      為了添加過濾的鏈接,需要在Book/Index view 和BookController中做改變。

      改變的View和前兩個秘方差不多。需要添加HTML去允許用戶去選擇他們想如何過濾內容。三個連接將被添加:全部的,新發布的和即將到來的。新發布的將被定義為最近2周發布的。即將到來的就被定義為還沒發布的。

      下邊是新的 Book/Index view。有三個link。第一個link包含當前的sortOrder,剩下的2個link包含了新的變量filter。像分頁link一樣。如果當前的filter是你選中的話,把他顯示成靜態文本而不是link,其他的fitler設置為link的形式。確保用戶更改排序規則時,filter也被維護。我們的Index view 要更新成如下:

      @Html.Partial("_Paging")
      <table>
      <tr>
      <th>
      @Html.ActionLink("Title", "Index", new
      {
      sortOrder = ViewBag.TitleSortParam,
      filter = ViewBag.CurrentFilter
      })
      </th>
      <th>
      @Html.ActionLink("Isbn", "Index", new
      {
      sortOrder = ViewBag.IsbnSortParam,
      filter = ViewBag.CurrentFilter
      })
      </th>
      <th>
      Summary
      </th>
      <th>
      @Html.ActionLink("Author", "Index", new
      {
      sortOrder = ViewBag.AuthorSortParam,
      filter = ViewBag.CurrentFilter
      })
      </th>
      <th>
      Thumbnail
      </th>
      <th>
      @Html.ActionLink("Price", "Index", new
      {
      sortOrder = ViewBag.PriceSortParam,
      filter = ViewBag.CurrentFilter
      })
      </th>
      <th>
      @Html.ActionLink("Published", "Index", new
      {
      sortOrder = ViewBag.PublishedSortParam,
      filter = ViewBag.CurrentFilter
      })
      </th>
      <th>
      </th>
      </tr>
      @foreach (var item in Model)
      {
      <tr>
      <td>
      @Html.DisplayFor(modelItem => item.Title)
      </td>
      <td>
      @Html.DisplayFor(modelItem => item.Isbn)
      </td>
      <td>
      @Html.DisplayFor(modelItem => item.Summary)
      </td>
      <td>
      @Html.DisplayFor(modelItem => item.Author)
      </td>
      <td>
      @Html.DisplayFor(modelItem => item.Thumbnail)
      </td>
      <td>
      @Html.DisplayFor(modelItem => item.Price)
      </td>
      <td>
      @Html.DisplayFor(modelItem => item.Published)
      </td>
      <td>
      @Html.ActionLink("Edit","Edit", new { id = item.ID }) |
      @Html.ActionLink("Details","Details", new { id = item.ID }) |
      @Html.ActionLink("Delete","Delete", new { id = item.ID })
      </td>
      </tr>
      }
      </table>
      @Html.Partial("_Paging")

      上一個秘方中創建的_Paging的Partial view也需要被更新。在下邊的例子里,4個paging link 已經被更新成傳遞了當前的filter,page,和sortOrder。以下是_Paging更新后的代碼:

      <p>
      @if (Model.HasPreviousPage)
      {
      @Html.ActionLink("<< First", "Index", new
      {
      page = 1,
      sortOrder = ViewBag.CurrentSortOrder,
      filter = ViewBag.CurrentFilter
      })
      @Html.Raw("&nbsp;");
      @Html.ActionLink("< Prev", "Index", new
      {
      page = Model.PageNumber - 1,
      sortOrder = ViewBag.CurrentSortOrder,
      filter = ViewBag.CurrentFilter
      })
      }
      else
      {
      @:<< First
      @Html.Raw("&nbsp;");
      @:< Prev
      }
      &nbsp;&nbsp;
      @if (Model.HasNextPage)
      {
      @Html.ActionLink("Next >", "Index", new
      {
      page = Model.PageNumber + 1,
      sortOrder = ViewBag.CurrentSortOrder,
      filter = ViewBag.CurrentFilter
      })
      @Html.Raw("&nbsp;");
      @Html.ActionLink("Last >>", "Index", new
      {
      page = Model.PageCount,
      sortOrder = ViewBag.CurrentSortOrder,
      filter = ViewBag.CurrentFilter
      })
      }
      else
      {
      @:Next >
      @Html.Raw("&nbsp;")
      @:Last >>
      }
      </p>

      接下來我們要改變BooksController,在Index()Action 中更改代碼。新接收一個filter變量。圖書的列表將基于用戶選擇的filter選項被縮減。有2中方法實現filter。

      1. 再次使用動態Linq庫 的where子句。
      2. 使用標準的Linq 和一個switch塊去創建一個強類型的子句。

      由于傳統的filter link并不包含太多的條目,這個秘方,我們選擇用第二種實現方法。這樣做的好處是,我們不需要考慮SQL注入的問題,因為他是強類型的,并且不是動態的。

      以下是BooksController部分代碼:

       

      using System;
      using System.Collections.Generic;
      using System.Data;
      using System.Data.Entity;
      using System.Linq;
      using System.Linq.Dynamic;
      using System.Web;
      using System.Web.Mvc;
      using MvcApplication.Models;
      using MvcApplication.Utils;
      using PagedList;
      namespace MvcApplication.Controllers
      {
      public class BooksController : Controller
      {
      private BookDBContext db = new BookDBContext();
      //
      // GET: /Books/
      public ViewResult Index(string sortOrder,string filter, int page = 1)
      {
      #region ViewBag Resources

      #endregion
      #region ViewBag Sort Params
      #endregion
      var books = from b in db.Books select b;
      #region Filter Switch
      switch (filter)
      {
      case "NewReleases":
      var startDate = DateTime.Today.AddDays(-14);
      books = books.Where(b => b.Published
      <= DateTime.Today.Date
      && b.Published >= startDate
      );
      break;
      case "ComingSoon":
      books = books.Where(b => b.Published >
      DateTime.Today.Date);
      break;
      default:
      // No filter needed
      break;
      }
      ViewBag.CurrentFilter =
      String.IsNullOrEmpty(filter) ? "" : filter;
      #endregion
      books = books.OrderBy(sortOrder);
      const int maxRecords = 2;
      var currentPage = page <= 0 ? 1 : page;
      return View(books.ToPagedList(currentPage,maxRecords));
      }
      }
      }

      在上邊的例子里,如果用戶選擇NewReleases 這個filter,這個搜索將返回今天或者14天之內出版的書。或者用戶選擇了Coming soon,搜索將返回即將出版的書。



       




      posted @ 2011-11-30 14:03  技術弟弟  閱讀(1995)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 无码天堂亚洲国产av麻豆| 国内精品大秀视频日韩精品| 成人一区二区不卡国产| 一区二区三区精品视频免费播放| 亚洲av无码之国产精品网址蜜芽| 国产成人啪精品午夜网站 | 中文字幕av日韩有码| XXXXXHD亚洲日本HD| 亚洲成A人片在线观看的电影| 中文字幕无码视频手机免费看| 久久天天躁夜夜躁一区| 无码人妻丰满熟妇啪啪欧美| 人妻精品动漫h无码| 欧美成人h精品网站| 一区二区三区无码视频免费福利| 国产免费午夜福利在线播放| 日韩中文字幕精品人妻| 亚洲国产在一区二区三区| 蜜臀av一区二区三区精品| 无码AV中文字幕久久专区| 人人玩人人添人人澡超碰| 人妻少妇乱子伦精品| 在国产线视频A在线视频| 国精品91人妻无码一区二区三区| 婷婷开心深爱五月天播播| 国产成人精品久久一区二区| 亚洲人成伊人成综合网小说| 下面一进一出好爽视频| japan黑人极大黑炮| 日韩国产精品中文字幕| 亚洲国产成人精品无色码| 亚洲精品日韩在线观看| 伊人久久大香线蕉AV网| 男女一边摸一边做爽爽| 亚洲精品国产精品国在线| 久久国内精品自在自线91| 最新AV中文字幕无码专区| 日本肉体xxxx裸交| 国产午夜一区二区在线观看| 夜夜春久久天堂亚洲精品| 亚洲一区二区三区在线观看精品中文|