700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程 简单编程

ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程 简单编程

时间:2019-12-20 21:17:29

相关推荐

ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程 简单编程

Core 动作结果 - Core 基础教程 - 简单教程,简单编程

原文: Core 动作结果 - Core 基础教程 - 简单教程,简单编程

Core 动作结果

前面的章节中,我们一直使用简单的C#类作为控制器。 虽然这些类不是从基类派生的,但仍然可以在 MVC 中使用这种方法。 当然了,对于控制器,但更常见的做法是从Microsoft.AspNetCore.Mvc命名空间中提供的控制器基类中派生控制器。本章中,我们将尝试这么做,并且学习动作结果 ( Action Results )。

动作结果 ( Action Result )

Microsoft.AspNetCore.Mvc命名空间下的基类Controller让我们能够访问很多关于 HTTP 请求的上下文信息,以及提供了一些方法帮助我​​们构建返回给回客户端的结果

返回的响应的结果中,我们可以发送简单的字符串或者整数,或者发送像对象这样的复杂数据来表示学生或大学或餐馆等信息,以及与该对象关联的所有数据

这些结果通常被封装到实现IActionResult接口的对象中,有大量的不同类型的结果实现了该接口,这些结果类型可以包含模型或文件的内容以供下载

这些不同的结果类型即可以返回 JSON,也可以返回 XML,或者 HTML 视图

动作基本上可以返回任意不同类型的动作结果。它们都有一个共同的基类:ActionResult

下表列出了不同种类的动作结果及其行为

范例: ContentResult

现在,我们修改HomeController.cs,引入命名空间Microsoft.AspNetCore.Mvc,并修改HomeController继承自Controller

下面代码是HomeController类的完整实现

using System;using Microsoft.AspNetCore.Mvc; namespace HelloWorld.Controllers { public class HomeController: Controller { public ContentResult Index() { return Content("你好,世界! 这条消息来自使用了 Action Result 的 Home 控制器"); } } }

我们可以看到,Index()方法返回了一个ContentResult类型的结果。ContentResult是实现了ActionResult接口的不同结果类型之一

Index()方法中,我们将一个字符串传递给Content()Content()方法会产生一个ContentResult,也就是说,Index()方法会返回ContentResult

保存HomeController.cs文件,重启应用程序,然后访问跟目录/,我们将会得到以下输出

我们可以看到,这个响应和之前我们看到的响应几乎没有任何区别,它仍然只是一个纯文本的响应

你可能很想知道使用 ActionResult 来生成东西有什么优势

在 Mvc 模式中,控制器决定接下来要做什么,返回一个字符串或 HTML 或返回可能被序列化为 JSON 等的模型对象

Mvc 中的控制器需要做的就是做出决定,但控制器不必直接在响应中写入决策结果。 它只需要返回结果,然后框架会使用这些结果并理解如何将结果转换为可通过 HTTP 发回的内容

范例:ObjectResult

如果你不能理解上面这些内容,没关系,我们再来看一个范例,这次我们使用 ObjectResult

在解决方案管理器中的HelloWorld上点击右键,创建一个新文件夹并将其命名为Models。 在Models文件夹中,添加一个用于表示雇员的Employee

创建完成后,目录结构如下

Employee.cs中的内容如下

using System;namespace HelloWorld.Models{ public class Employee { public Employee() { } } }

修改刚刚创建的Employee类,添加两个属性,一个整型的ID和 一个字符串类型的Name,修改完成后Employee.cs中的内容如下

using System;namespace HelloWorld.Models{ public class Employee { public Employee() { } public int ID { get; set; } public string Name { get; set; } } }

然后我们回到HomeController控制器,修改Index()方法,返回一个Employee对象。

修改完成后的HomeController.cs内容如下

using System;using Microsoft.AspNetCore.Mvc; using HelloWorld.Models; namespace HelloWorld.Controllers { public class HomeController: Controller { public ObjectResult Index() { var employee = new Employee { ID = 1, Name = "语飞"}; return new ObjectResult(employee); } } }

现在,返回的不是 Content,而是返回一个不同类型的结果ObjectResult。 如果我们想要一个 ObjectResult,我们需要创建或实例化一个 ObjectResult 并将一些模型对象作为参数传递给它

在 MVC 框架中,ObjectResult 是特殊的,因为当我们返回一个 ObjectResult 时,MVC 框架将访问这个对象。并将这个对象做一些转换,然后作为 HTTP 响应返回给客户端

在转换 ObjectResult 对象时,它可能被序列化为 XML 或 JSON 或其它格式, 至于什么格式,由应用程序启动时向 MVC 提供的配置信息决定。如果我们没有显式的配置任何东西,那么将会使用 JSON 作为默认格式

保存所有的文件,重启应用程序,然后访问首页,我们将得到如下结果

posted on -09-29 16:07 NET未来之路 阅读(...) 评论(...) 编辑 收藏

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。