在本教程中,我們來學習如何進行分組。 在 書籍管理系統的“關於”頁上,將顯示每個出版社有多少書籍。 這要求在分組上再進行分組和簡單計算。 要完成此操作,需要執行以下操作: 創建一個視圖模型類,該視圖類是需要傳遞到該視圖的數據的抽象。 修改關於視圖。 ...
學習ASP.NET Core Razor 編程系列目錄
學習ASP.NET Core Razor 編程系列二——添加一個實體
學習ASP.NET Core Razor 編程系列三——創建數據表及創建項目基本頁面
學習ASP.NET Core Razor 編程系列四——Asp.Net Core Razor列表模板頁面
學習ASP.NET Core Razor 編程系列五——Asp.Net Core Razor新建模板頁面
學習ASP.NET Core Razor 編程系列六——資料庫初始化
學習ASP.NET Core Razor 編程系列七——修改列表頁面
學習ASP.NET Core Razor 編程系列八——併發處理
學習ASP.NET Core Razor 編程系列九——增加查詢功能
學習ASP.NET Core Razor 編程系列十——添加新欄位
學習ASP.NET Core Razor 編程系列十一——把新欄位更新到資料庫
學習ASP.NET Core Razor 編程系列十二——在頁面中增加校驗
學習ASP.NET Core Razor 編程系列十三——文件上傳功能(一)
學習ASP.NET Core Razor 編程系列十四——文件上傳功能(二)
學習ASP.NET Core Razor 編程系列十五——文件上傳功能(三)
學習ASP.NET Core Razor 編程系列十六——排序
在本教程中,我們來學習如何進行分組。
通過前面的教程學習,你可以實現一個簡單的書籍管理系統。 在本教程將學習如何創建具有簡單分組功能的頁面。
一、創建About頁面來顯示書籍統計信息
在 書籍管理系統的“關於”頁上,將顯示每個出版社有多少書籍。 這要求在分組上再進行分組和簡單計算。 要完成此操作,需要執行以下操作:
- 創建一個視圖模型類,該視圖類是需要傳遞到該視圖的數據的抽象。
- 修改關於視圖。
二、 創建視圖模型
- 在Visual Studio 2017的解決方案資源管理器的Model文件夾中創建ViewModels文件夾。
2. 在新的文件夾中,添加EnrollmentPublishGroup.cs類文件,並且寫下代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace RazorMvcBooks.Models.ViewModels { public class EnrollmentPublishGroup { public string Publish { get; set; } public int BooksCount { get; set; } } }
三、更新“About”頁面模型
在Visual Studio 2017的解決方案資源管理器的,找到 Pages/About.cshtml.cs 文件,並且修改代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.AspNetCore.Mvc.RazorPages; using RazorMvcBooks.Models.ViewModels; namespace RazorMvcBooks.Pages { public class AboutModel : PageModel { public string Message { get; set; } public async Task OnGetAsync() { Message = "Your application description page."; IQueryable<EnrollmentPublishGroup> data = from book in _context.Book group book by book.Publishing into publishGroup select new EnrollmentPublishGroup() { Publish = publishGroup.Key, BooksCount = publishGroup.Count() }; BookGroup = await data.AsNoTracking().ToListAsync(); } private readonly RazorMvcBooks.Models.BookContext _context; public AboutModel(RazorMvcBooks.Models.BookContext context) { _context = context; } public IList<EnrollmentPublishGroup> BookGroup { get; set; } } }
LINQ 語句按出版社對書籍實體進行分組,計算每組中實體的數量,並將結果存儲在 EnrollmentPublishGroup 視圖模型對象的集合中。
註意:EF Core 當前不支持 LINQ group 命令。 在上述代碼中,所有學生記錄均從 SQL Server 返回。 group 命令應用於 Razor 頁面應用,而不是應用於 SQL Server。 EF Core 2.1 支持此 LINQ group 運算符,併在 SQL Server 上進行分組。
四、修改“About”Razor 頁面
在Visual Studio 2017的解決方案資源管理器的找到 Pages/About.cshtml 文件中的代碼替換為以下代碼:
@page @model AboutModel @{ ViewData["Title"] = "書籍統計信息"; } <h2>@ViewData["Title"]</h2> <h3>@Model.Message</h3> <p>Use this area to provide additional information.</p> <h2>書籍統計信息</h2> <table> <tr> <th> 出版社 </th> <th> 書籍數量 </th> </tr> @foreach (var item in Model.BookGroup) { <tr> <td> @Html.DisplayFor(modelItem => item.Publish) </td> <td align="right"> @item.BooksCount </td> </tr> } </table>
五、運行結果
在Visual Studio 2017的中按F5運行應用,並且點擊“關於”頁面。 表格中會顯示每個出版社的書籍計數。