摘要

MVC框架针对HttpResponse进行抽象与多态,使HttpResponse均可表示为ActionResult。那么,抽象多态表现在哪里呢?

//封装一个Action的结果.
public abstract class ActionResult
{
protected ActionResult(); //启用对操作方法结果的处理。
// 参数:
// context: 用于执行结果的上下文。上下文信息包括控制器、HTTP 内容、请求上下文和路由数据。
public abstract void ExecuteResult(ControllerContext context);
}

抽象:因为HttpResponse返回的就是一个结果,这个结果就是一个抽象。表现在ActionResult类的ExecuteResult方法上,所有不同种类的结果都是通过调用此方法输出到浏览器。

多态:因为有多种结果,那么继承与多态就是必须的了。详见下表。

结果类别

父亲层级

描述

EmptyResult

ActionResult

表示一个不执行任何操作的结果

ContentResult

ActionResult

表示用户定义的内容类型

FileResult

ActionResult

表示一个用于将二进制文件内容发送到响应的基类。

FileContentResult

FileResult

将二进制文件的内容发送到响应。

FilePathResult

FileResult

将文件的内容发送到响应

FileStreamResult

FileResult

使用 Stream 实例将二进制内容发送到响应。

JavaScriptResult

ActionResult

将 JavaScript 内容发送到响应。

JsonResult

ActionResult

将 JSON 格式的内容发送到响应。

HttpStatusCodeResult

ActionResult

返回带特定 HTTP 响应状态代码和说明的操作结果的方法。

HttpNotFoundResult

HttpStatusCodeResult

定义一个用于指示未找到所请求资源的对象。

HttpUnauthorizedResult

HttpStatusCodeResult

表示未经授权的 HTTP 请求的结果。

RedirectResult

ActionResult

通过重定向到指定的 URI 来控制对应用程序操作的处理。

RedirectToRouteResult

ActionResult

使用指定的路由值字典来执行重定向的结果。

ViewResult ViewResultBase—>
ActionResult
IView 实例来呈现视图

Usage

我们关注点侧重一些简单的使用。

return Content(jsonResult);   //返回一个文本
if (p == null) return NotFound();  //状态码
return Json(result);   //JSON
return Json(result, JsonRequestBehavior.AllowGet);
 
return View();    //视图
return File(data.ExportExcel(), "application/vnd.ms-excel", fileName);   //Excel文件

总结:所有的ActionResult均可以在Controller中找到,只需要关注构造函数,属性等API即可使用。

public abstract class Controller

MVC ActionResult视图结果的更多相关文章

  1. ASP.NET MVC——Razor视图引擎

    Razor是MVC框架视图引擎,我们今天就来说一说Razor视图引擎. 首先还是来创建一个基础项目叫Razor来演示. 先来定义一个Model叫Product public class Product ...

  2. ASP.NET MVC 5 - 视图

    在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所 ...

  3. [转]ASP.NET MVC 5 - 视图

    在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所 ...

  4. 列举mvc ActionResult的返回值

    8.列举ASP.NET MVC ActionResult的返回值有几种类型? 主要有View(视图).PartialView(部分视图).Content(内容).Json(Json字符串).Javas ...

  5. 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图

    这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配 ...

  6. asp.net mvc 部分视图加载区别

    ASP.NET MVC 部分视图   ASP.NET(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. [部分视图] ASP.NET MVC 里的部分视图,相当于 Web Form 里的 ...

  7. MVC中视图View向控制器传值的方法

    MVC中视图View向控制器传值的方法步骤如下: 1.index页面: 页面中只需要一个触发事件的按钮

  8. mvc的视图中显示DataTable的方法

    mvc的视图中显示DataTable的方法: 不断的循环画出table @{ ViewBag.Title = "ShowDataTable"; } @using System.Da ...

  9. 第5章——使用 Razor(MVC框架视图引擎)

    Razor 是MVC框架视图引擎的名称. 本章提供 Razor 语法的快速教程,以使你能够识别 Razor 表达式. 本章不打算提供 Razor 的完整参考,而将其视为一个语法速成教程.在本书的后续内 ...

随机推荐

  1. Win10如何隐藏Windows Defender任务栏图标

    导读 Windows 10 至发布以来就内置集成了 Windows Defender 安全防护应用,但有许多用户平常压根儿就没注意到它的存在.微软为了使安全防护功能更加明显,Windows 10 周年 ...

  2. 【数据库】如家汉庭酒店2000万开房数据1.71G/BAK,792M/CSV

    多家连锁酒店使用了某网络有限公司,开发的酒店WiFi管理.认证管理系统.用户在酒店连接开放的WiFi,上网时会被要求通过网页认证,填写相关信息.这个认证不是在酒店服务器完成的,而是在 某公司 的认证服 ...

  3. 暑假热身 A. GCC

    GCC编译器是一个由GNU项目维护的编译系统,它支持多种编程语言的编译.但是它并不包含数学运算符“!”.在数学中,这个符号代表阶乘.表达式n!的意思是从1到n的所有整数的乘积. 例如,4!=4*3*2 ...

  4. poj1328贪心 雷达,陆地,岛屿问题

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60381   Accepted: 13 ...

  5. C++中new的解说

    new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 ...

  6. HDOJ 1312 DFS&BFS

    Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. twisted udp编程

    概述 Unlike TCP, UDP has no notion of connections. A UDP socket can receive datagrams from any server ...

  8. GIT的标准文档 使用和服务介绍

    http://www.kancloud.cn/kancloud/how-to-use-github/42192 1. 探索GitHub 熟悉Git的人几乎都知道并喜欢GitHub,反过来GitHub也 ...

  9. 隐藏Nginx/Apache版本号的安全性与方法

    一.先介绍nginx隐藏版本号的方法. 搭建好nginx或者apache,为了安全起见我们都会隐藏他们的版本号,这边讲的是nginx的版本号,如果你也想隐藏apache的版本号,那请点前面的链接.请看 ...

  10. HDU1717小数化分数2

    小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...