zoukankan      html  css  js  c++  java
  • ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 06. Controller 返回View


    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的类型,然后循环输出数据


    这里把多余的引用去掉


     

  • 相关阅读:
    取三级分销上下级用户id
    Map集合
    Log4j
    异常
    逻辑运算符
    变量
    变量名命名规则
    命名法
    Nessus
    Nmap扫描工具
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/10920624.html
Copyright © 2011-2022 走看看