学习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 编程系列十五——文件上传功能(三)

学习ASP.NET Core Razor 编程系列十六——排序

在本教程中,我们来学习如何进行分组。

通过前面的教程学习,你可以实现一个简单的书籍管理系统。 在本教程将学习如何创建具有简单分组功能的页面。

一、创建About页面来显示书籍统计信息

在 书籍管理系统的“关于”页上,将显示每个出版社有多少书籍。 这要求在分组上再进行分组和简单计算。 要完成此操作,需要执行以下操作:

  • 创建一个视图模型类,该视图类是需要传递到该视图的数据的抽象。
  • 修改关于视图。

二、 创建视图模型

  1. 在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运行应用,并且点击“关于”页面。 表格中会显示每个出版社的书籍计数。

学习ASP.NET Core Razor 编程系列十七——分组的更多相关文章

  1. 学习ASP.NET Core Razor 编程系列十九——分页

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  2. 学习ASP.NET Core Razor 编程系列十八——并发解决方案

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  3. 学习ASP.NET Core Razor 编程系列二——添加一个实体

    在Razor页面应用程序中添加一个实体 在本篇文章中,学习添加用于管理数据库中的书籍的实体类.通过实体框架(EF Core)使用这些类来处理数据库.EF Core是一个对象关系映射(ORM)框架,它简 ...

  4. 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  5. 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  6. 学习ASP.NET Core Razor 编程系列六——数据库初始化

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. 学习ASP.NET Core Razor 编程系列七——修改列表页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  8. 学习ASP.NET Core Razor 编程系列八——并发处理

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  9. 学习ASP.NET Core Razor 编程系列九——增加查询功能

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. CFile类的open方法中的参数说明

    CFile::Open是在MFC里面,打开一个文件的方法. Open函数的原型如下: virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, ...

  2. BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图

    BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大. ...

  3. Nginx重新编译添加新模块

    找到nginx的安装包目录,如果没有的话去官网重新下载 查看ngixn版本极其编译参数 /usr/local/nginx/sbin/nginx -V 进入nginx源码目录,重新设置nginx ./c ...

  4. 用Python学分析 - t分布

    1. t分布形状类似于标准正态分布2.  t分布是对称分布,较正态分布离散度强,密度曲线较标准正态分布密度曲线更扁平3.  对于大型样本,t-值与z-值之间的差别很小 作用- t分布纠正了未知的真实标 ...

  5. DDD领域驱动设计理论篇 - 学习笔记

    一.Why DDD? 在加入X公司后,开始了ASP.NET Core+Docker+Linux的技术实践,也开始了微服务架构的实践.在微服务的学习中,有一本微软官方出品的<.NET微服务:容器化 ...

  6. Sql 优化解决方案

    转自:https://blog.csdn.net/jie_liang/article/details/77340905 用以记录: 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行 ...

  7. jQuery --- 第四期 (jQuery动效)

    学习笔记 1.jQuery动画的淡入淡出 <!doctype html> <html> <head> <meta charset="utf-8&qu ...

  8. JavaScript函数定义 ,参数调用

    一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...

  9. 一次apk打开时报内存溢出错误,故写下内存溢出的各种原因和解决方法

    原转载:https://blog.csdn.net/cp_panda_5/article/details/79613870 正文内容: 对于JVM的内存写过的文章已经有点多了,而且有点烂了,不过说那么 ...

  10. ionic3 生命周期

    ionic3 总共有8个钩子函数,分别是:onPageLoaded,onPageWillEnter,onPageDidEnter,onPageWillLeave,onPageDidLeave,onPa ...