排序、 篩選和分頁與 ASP.NET MVC 應用程式中的實體框架
http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application
Contoso 大學示例 web 應用程式演示如何建立使用實體框架 6 程式碼第一次和視覺工作室 2013年的 ASP.NET MVC 5 應用程式。系列教程有關的資訊,請參閱本系列第一篇教程.
在前面的教程你實施一套基本的 CRUD 操作,為Student
下面的插圖顯示頁面當你完成時的外觀。列標題是連結,使用者可以單擊要作為排序依據的列。單擊列標題,一再升序和降序之間切換。
將列排序連結新增到學生索引頁
若要新增排序到學生索引頁面,會改變Student
控制器的Index
方法和Student
索引檢視中新增程式碼。
新增排序功能的索引方法
在Controllers\StudentController.cs,用下面的程式碼替換Index
法︰
publicActionResultIndex(stringsortOrder){ViewBag.NameSortParm=String.IsNullOrEmpty(sortOrder)?"name_desc":"";ViewBag.DateSortParm= sortOrder =="Date"?"date_desc":"Date";var students =from s in db.Studentsselect s;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;}returnView(students.ToList());}
此程式碼接收sortOrder
引數從
URL 中的查詢字串。由 ASP.NET MVC 作為操作方法的引數提供的查詢字串值。該引數將是一個字串,它是"名稱"日期",可以選擇跟著一條下劃線和字串"desc"來指定降序排列。預設排序順序升序。
第一次請求是索引頁,那裡是沒有查詢字串。學生按升序排列顯示的LastName
,這是預設設定,設立的秋天通過案例switch
語句。當用戶單擊列標題的超連結時,在查詢字串中提供適當sortOrder
值。
兩個ViewBag
變數使用,檢視可以配置列標題超連結與適當的查詢字串值︰
ViewBag.NameSortParm=String.IsNullOrEmpty(sortOrder)?"name_desc":"";ViewBag.DateSortParm= sortOrder =="Date"?"date_desc":"Date";
這些都是三元的語句。第一個指定sortOrder
引數為
null 或為空,是否ViewBag.NameSortParm
應設定為"name_desc";否則,應將設定為空字串。這兩個語句啟用檢視,設定列標題的超連結,如下所示︰
當前排序順序 | 最後名稱超連結 | 日期的超連結 |
---|---|---|
最後名稱升序排列 | 降序 | 升序 |
最後名稱降序 | 升序 | 升序 |
日期升序 | 升序 | 降序 |
日期降序 | 升序 | 升序 |
該方法使用LINQ
到實體來指定要排序的列。程式碼建立了一個IQueryable變數之前switch
語句、
修改在switch
語句,和後switch
語句呼叫ToList
方法。當您建立和修改IQueryable
變數時,沒有查詢被髮送到資料庫。不執行查詢,直到您轉換IQueryable
物件集合通過呼叫一個方法如ToList
。因此,這段程式碼結果直到return
View
的語句不執行單個查詢中。
作為編寫不同的 LINQ 語句為每個排序順序的替代方法,您可以動態地建立 LINQ 語句。關於動態 LINQ 的資訊,請參閱動態 LINQ.
新增列標題到學生索引檢視的超連結
在Views\Student\Index.cshtml,將標題行的<tr>
和<th>
元素替換突出顯示的程式碼︰
<p> @Html.ActionLink("Create New", "Create") </p><table><tr><th> @Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.NameSortParm }) </th><th>First Name </th><th> @Html.ActionLink("Enrollment Date", "Index", new { sortOrder = ViewBag.DateSortParm }) </th><th></th></tr> @foreach (var item in Model) {
此程式碼使用ViewBag
屬性中的資訊來設定超連結與適當的查詢字串值。
執行頁並單擊最後一個名字和註冊日期列標題,以驗證該文獻整理工作。
單擊姓氏標題後,學生是降序顯示最後一個名稱。
向學生索引頁新增一個搜尋框
若要新增篩選到學生索引頁,你會向檢視中新增一個文字框和一個提交按鈕和Index
方法中做相應的修改。文字框中會讓你輸入名字和姓氏欄位中搜索的字串。
將篩選功能新增到索引方法
在Controllers\StudentController.cs,將Index
方法替換下面的程式碼
(更改突出顯示)︰
publicViewResultIndex(相關推薦
排序、 篩選和分頁與 ASP.NET MVC 應用程式中的實體框架
http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-frame
MVC5 Entity Framework學習之新增排序、篩選和分頁功能
前一篇文章中實現了對Student 實體的的基本CRUD操作,在這篇文章中將演示如何為Students Index頁面新增排序、篩選和分頁的功能。 下面是當完成排序、篩選和分頁功能後的截圖,你可以點選列標題來進行排序。 1.為 Students Index頁面新增列排序連
4、ASP.NET MVC入門到精通——NHibernate構建一個ASP.NET MVC應用程式
下週就去辦理離職手續了,之前沒有使用過NHibernate,只知道NHibernate是一種ORM框架,但是聽說新公司是使用NHibernate在做專案,所以,我就網上找資料學習一下NHibernate,在此以筆記的形式,記錄自己的學習過程,一來供自己以後備忘用,而來希望對同樣準備學習NHibernate
使用Metrics.NET 構建 ASP.NET MVC 應用程式的效能指標
通常我們需要監測ASP.NET MVC 或 Web API 的應用程式的效能時,通常採用的是自定義效能計數器,效能計數器會引發無休止的運維問題(損壞的計數器、許可權問題等)。這篇文章向你介紹一個新的替代效能計數器的工具Metrics.NET,因為是它是內部的,所以我們能夠向系統中新增更多更有意義的度量標準。
ASP.NET MVC – 應用程式資料夾
Views 資料夾 Views 資料夾存有與應用程式的顯示相關的 HTML 檔案(使用者介面)。 Views 資料夾中含有每個控制器對於的一個資料夾。 Visual Web Developer 已建立了一個 Account 資料夾、一個 Home 資料夾、一個 Shared 資料夾(在 Views 資料夾內
15.ASP.NET Core 應用程式中的靜態檔案中介軟體
在這篇文章中,我將向大家介紹,如何使用中介軟體元件來處理靜態檔案。這篇文章中,我們討論下面幾個問題:在ASP.NET Core中,我們需要把靜態檔案存放在哪裡?在ASP.NET Core中 wwwroot資料夾是啥?怎樣在ASP.NET Core應用程式中,配置靜態檔案中介軟體?UseFileServer中介
將終結點圖新增到你的ASP.NET Core應用程式中
在本文中,我將展示如何使用`DfaGraphWriter`服務在ASP.NET Core 3.0應用程式中視覺化你的終結點路由。上面文章我向您演示瞭如何生成一個有向圖([如我上篇文章中所示](https://www.cnblogs.com/yilezhu/p/13301981.html)),可以使用[Grap
DataTables伺服器端傳入傳出(接收與提交)的資料格式 搜尋、排序和分頁與後臺資料的互動
在dataTables伺服器端處理模式下,想要用好dataTables 必須先去了解它與後臺傳遞資料的格式,這樣才能做好資料在後臺的處理,完成dataTables的一系列篩選、排序和分頁功能。 1. dataTables的提交資料 dataTables向
Cookie、Session和分頁
為什麼使用Cookie:因為HTTP請求是沒有狀態的,每一次請求都是獨立的。 什麼是Cookie:Cookie就是儲存在瀏覽器上的鍵值對,服務端控制著響應,在響應裡新增一個鍵值對,讓瀏覽器在本地儲存,下一次請求的時候,自動攜帶這個鍵值對,是在瀏覽器端設定的,瀏覽器端也可以禁用Cookie。 Cookie的
ASP.NET MVC搭建專案後臺UI框架—6、客戶管理(新增、修改、查詢、分頁)
目錄 接著之前未寫完的繼續,本篇,我將講解在此UI框架中和ASP.NET MVC4進行結合開發。效果如下: 這裡,我將新增和修改用了兩個不同的檢視,當然也可以把新增和修改放到同一個檢視中,但是要寫一些業務邏輯程式碼來區分當前呼叫的是修改還是新增,根據新增和修改的不同,而對介面進行不同的操作。 新
ASP.NET與ASP.NET MVC 的差異、優點及缺點
一個 src 頁面加載 加載 class .net 技術分享 views bubuko 眾所周知,在微軟的編程語言發展歷史中,asp.net是不得不提的一個重要的發展階段,它具有快速開發、層級明確的優點,但最大的缺點,同時也是它逐漸被廢棄的原因就是,頁面加載的viewsta
再談使用X.PagedList.Mvc 分頁(ASP.NET Core 2.1)
asp ram 默認 mvc 文本 它的 otn package www. 在以前的博文中寫過使用X.PagedList.Mvc組件來對ASP.NET MVC應用程序進行分頁,可以參考此篇隨筆:Asp.net MVC 使用PagedList(新的已更名 為X.PagedLi
ASP.NET MVC搭建專案後臺UI框架—3、面板摺疊和展開
目錄 上一節已經新增好了選單特效,這一節,我們來新增面板的摺疊和展開功能,效果圖如下: 思路:我在Right檢視中添加了一個div,在這個div中存放一張圖片,通過對這張圖片的點選,來控制Left檢視的隱藏和顯示。說白了,這裡其實就是修改主框架Index檢視中frameset的 cols屬性。
ASP.NET MVC搭建專案後臺UI框架—9、伺服器端排序
關於jquery datables的在伺服器端的排序,在網上貌似沒有看到.NET的例子,說實話,之前我也迷惑過,習慣了直接從網上找現成的東西,經過一翻搜尋,沒找到,於是乎,自己除錯唄,調了前臺,調後臺,還真被我看出了規律。事實上datables是支援多列排序的,但是本例,我只寫了單列排序。 在控制器
ASP.NET MVC搭建專案後臺UI框架—5、Demo演示Controller和View的互動
目錄 這一節,我將用一個Demo來演示在此UI框架中,控制器和檢視的互動。以渠道管理為例。效果圖如下: 按回車執行查詢,不是F5,筆誤。 這裡我使用了基於jquery的模態窗體元件lhgdialog和表格元件dataTables。dataTables更多資料請參考:http://dt.thxop
ASP.NET MVC搭建專案後臺UI框架—4、tab多頁籤支援
目錄 在點選左側選單中的選項時,我希望有Extjs、EasyUI等中類似的tab頁籤功能,因為這樣可以支援多個頁面的瀏覽,有時候我們可能需要同時開啟多個頁面,如果不使用頁籤,那麼每次要檢視某個頁面都要去重新呼叫並重新整理,如果在網速慢或者該介面載入很耗時的情況下,簡直會讓人奔潰。因為我又不想引入整個Ex
MVC學習系列-WebForm與asp.net MVC兩種設計模式區別、MVC設計模式基礎瞭解
ASP.NET 是一個開發框架,用於通過 HTML、CSS、JavaScript 以及伺服器指令碼來構建網頁和網站。ASP.NET 支援三種開發模式:Web Pages、MVC (Model View Controller) 以及 WebForm。下面首先區別比較一下Web
Spring net與Asp net Mvc結合示例
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
關於ASP.NET WebForm與ASP.NET MVC的比較
WebForm的理解 1、 WebForm概念 ASP.NETWebform提供了一個類似於Winform的事件響應GUI模型(event-drivenGUI),隱藏了HTTP、HTML、JavaScript等細節,將使用者介面構建成一個伺服器端的樹結構控制元件(Co
Chart.js 與 ASP.NET MVC 整合應用
Chart.js 是一套開放原始碼的「圖表」繪製函式庫,和其他第三方的圖表工具相比,Chart.js 的特色如下: 支援 HTML 5、響應式網頁 (RWD, Responsive Web Design) 可免費使用,且可作為商業用途 開放原始碼 (GitHub) 可用 JavaScrip