Controller父类会提供很多上下文的相关信息,还提供了很多封装的方法

返回的对象要求实现了IActionResult接口

继承父类,并引入命名空间

写this点就出现很多东西,这些就是上下文的信息。

这就获取了Controller的名字

action的name

还有一个我们熟悉的对象HttpContext对象

可以看request的Body或者Header等等的一些信息

也可以操作ResponseWrite,但是不建议这么做

不建议在Controller里面直接访问HttpContext对象,不利于单元测试
可以return OK方法

F12查看OK的源码


还封装了返回文件的方法,也实现了IActionResult接口

还可以使用this.Content返回一串文字

然后修改Action的返回类型为IActionResult

F12进去可以看到实际的返回类型为ContentResult

Action决定要做什么事,真正做这个事的是MVC框架
使用IactionResult更灵活,更利于扩展
简历model文件夹,并新建类Student类

ObjectResult返回实体对象

Controller把这个学生的信息放在ObjectResult里面,到底怎么处置这个ObjectResult是有管道里的其他环节来处理的
预览,浏览器里面返回的是Json结果

Action返回视图

viewRresult可以附带一个model对象,视图可以使用model来创建html
View()的返回结果是ViewResult

运行起来发生错误,这里没有找到对应的cshtml页面


如果View啥都写就会找对应的Action名字的视图文件,
我们在View里面写个Student

运行效果,它就会去找Student.cshtml页面

建立:View/Home/Index.cshtml文件


运行效果

把st作为参数返回给view

有一个特殊的变量,@Model使用这个变量来访问传过来的Model对象
@Model就表示从Action的View传过来的对象

指定@Model的具体类型,现在是个dynamic的类型
也是为了写代码的时候有只能提示

使用一个指令让@Model有只能提示

这里用消息的@model它是一个指令。大写的@Model是传过来的对象,这两个容易混淆
这个指令可以提供一些信息
用小写的model来告诉大写Model它的类型

这样直接把属性的字段可以点出来了

运行结果

新建文件夹Services/下面新建文件IRepository.cs

现在的数据类型是Student,以后可能是其他的类型,所以这里使用泛型

这是一个接口

建立实现类,因为我们是写死的数据
,所以叫做InMemeryRepository
实现接口传入Student类型

创建三条学生的数据

注册服务

这里使用AddScope。表示每次Http请求会产生新的实例


Controller里面构造函数注入

这是ReSharper的插件的快捷方式


view页面指定model的类型,然后循环输出数据


这里把多余的引用去掉

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 06. Controller 返回View的更多相关文章

  1. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道

    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道 语雀: https://www.yuque.com/yuejiangliu/dotnet/ ...

  2. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器

    在MVC的请求管道 并不是  asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授 ...

  3. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置

    视频地址: https://www.bilibili.com/video/av38392956/?p=2 语雀 https://www.yuque.com/yuejiangliu/dotnet/ixt ...

  4. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 12. Views 下

    ASP.NET Core MVC 13. 安装前端库 Partial VIew 就是部分View,他没有自己的数据,数据来自图中白色的那块,它的数据需要传进去,第一个参数是View的名称,第二个参数就 ...

  5. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件

    注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureService ...

  6. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 13. 安装前端库

    前端库使用npm进行安装,需要先建立webpack.json文件 因为我们没有使用npm安装任何库,所以npm的文件夹是空的 这里是用于开发时构建时引用的库写在这里 这里用到bootStrap 开发时 ...

  7. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 27. CICD Azure DevOps

    VSTS做持续集成 后来改名叫做Azure Deveps https://azure.microsoft.com/zh-cn/services/devops/ 这是中文的地址 创建一个项目 名称.描述 ...

  8. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 01. 创建项目 +项目结构和配置简介

    新建项目:Tutotial.Web 解决方案名称可以把web去掉 视频里面把git这个选项勾选了.我就不勾选了 dotnet CLI创建项目 首先必须安装好了.net Core的SDK dotnet ...

  9. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由

    视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态 ...

随机推荐

  1. 如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容?

    原文:如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容? 文章名称: 如何在ASP.NET Core自定义中间件读取Request.Body和 ...

  2. 使用虚拟机VM运行Linux版OpenERP

    Table of Contents 下载.安装vmware player --免费 从百度云下载 镜像文件 建立vm 运行vm 访问openerp 更新代码至最新         下载.安装vmwar ...

  3. 鼠标滚轮实现图片的缩放-------Day79

    今天是7月的最后一天了,不得不说,我定下的七月份剩余几天的计划是完不成了.一则工作确实紧了些,再则没能处理好生活.工作和学习的节奏.这才是人生最大的课题吧.只是也还好.至少自己还在坚持着.事实上真的越 ...

  4. hive cli 启动缓慢问题

    hive-0.13.1启动缓慢的原因 发现时间主要消耗在以下3个地方: 1. hadoopjar的时候要把相关的jar包上传到hdfs中(这里大概消耗5s,hive0.11一样,这个地方不太好优化) ...

  5. 处理页面载入图片js(等比例压缩图片)

    第一页面html  <div class="admin">${answer.content}</div> <div class="admin ...

  6. Java基础:执行时异常和非执行时异常

    1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为全部异常的超类. Java中的异常分为两大类:错误Error和异常Exception.Jav ...

  7. npm的安装和更新

    https://nodejs.org官网下载软件安装 验证是否安装,进入命令行 输入npm -v 这个是安装node自动带的工具 npm install npm@xxx 自动更新自己,后边跟版本号 n ...

  8. Linux编程---进程通信

    Linux的通信方式主要有分类有以下几种: -匿名管道和FIFO有名管道 -消息队列,信号量和共享存储 -套接字 对于套接字的进程通信,我就留在套接字的文章中再写了. 一.管道 管道是最古老的进程通信 ...

  9. openwrt procd

    接着前面写过的一篇关于 procd 的笔记. procd 在 STATE_INIT 时会运行 /etc/inittab 中描述的几个级别指定程序. procd_inittab_run("re ...

  10. Spark 学习笔记:(三)Spark SQL

    参考:https://spark.apache.org/docs/latest/sql-programming-guide.html#overview http://www.csdn.net/arti ...