首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Contoso University 教學 (三):學生索引頁排序、篩選與分頁實作

     編輯:關於ASP.NET

在 Student Index 頁面實作三大核心功能:欄位排序、關鍵字搜尋、資料分頁。

Controller 核心邏輯

public ViewResult Index(string sortOrder, string searchString, int? page) {
    ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "Name_desc" : "";
    ViewBag.DateSortParm = sortOrder == "Date" ? "Date_desc" : "Date";
    var students = from s in db.Students select s;
    if (!String.IsNullOrEmpty(searchString))
        students = students.Where(s => s.LastName.Contains(searchString) || s.FirstMidName.Contains(searchString));
    switch (sortOrder) {
        case "Name_desc": students = students.OrderByDescending(s => s.LastName); break;
        case "Date": students = students.OrderBy(s => s.EnrollmentDate); break;
        case "Date_desc": students = students.OrderByDescending(s => s.EnrollmentDate); break;
        default: students = students.OrderBy(s => s.LastName); break;
    }
    int pageSize = 3;
    return View(students.ToPagedList(page ?? 1, pageSize)); // 需 PagedList 套件
}

View 關鍵點

  • 欄標題產生排序連結:@Html.ActionLink("姓名", "Index", new { sortOrder = ViewBag.NameSortParm })
  • 搜尋表單:GET 方式提交 searchString
  • 分頁導航:@Html.PagedListPager(Model, page => Url.Action("Index", new { page, sortOrder, searchString }))

IQueryable 延遲執行特性確保排序/篩選/分頁在資料庫端完成,僅傳回當頁資料,效能最佳。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved