摘要

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. MFC 中控件的启用与禁用

    启用和禁用控件可以调用CWnd::EnableWindow 函数. BOOL EnableWindow(BOOL bEnable = TRUE); 判断控件是否可用可以调用 CWnd::IsWindo ...

  2. iPhone/iOS图片相关(读取、保存、绘制、其它相关)

    http://blog.csdn.net/jerryvon/article/details/7526147 20:50:42 一.读取图片 1.从资源(resource)读取 UIImage* ima ...

  3. PHPStorm+Wamp+Xdebug+Windows7调试代码

    Wamp 集成环境 PHPStorm+Xdebug 调试代码 2013.04.16 花了两个小时时间终于 , 配置成功了 ! 我的开发环境如下 , 其它环境也可以参考我的配置 开发环境 : Windo ...

  4. 反转字符串--C和Python

    将字符串反转,即“abcde”->"edcba" C语言实现: [转自http://www.kanzhun.com/mianshiti/456.html?sid=mail_1 ...

  5. ENGINE=InnoDB

    最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表 区别如下原来是MyI ...

  6. cURL的几个经典实例

    1.cURL请求的基本步骤: (1)初始化 (2)设置选项,包括URL (3)执行并获取HTML文档内容 (4)释放cURL句柄 <?php //1.初始化 $ch = curl_init(); ...

  7. outlook.office365.com传参

    string m_html = string.Empty; m_html += "<script>"; m_html += string.Format("wi ...

  8. 让Delphi的DataSnap发挥最大效率

    让Delphi的DataSnap发挥最大效率 让Delphi的DataSnap发挥最大效率 一个DataSnap的应用程序由两个层组成: DataSnap服务器,它有一个带有一个或者更多DataSet ...

  9. Python -- BeautifulSoup的学习使用

    BeautifulSoup4.3 的使用 下载和安装 # 下载 http://www.crummy.com/software/BeautifulSoup/bs4/download/ # 解压后 使用r ...

  10. Floyd最短路算法

    Floyd最短路算法 ----转自啊哈磊[坐在马桶上看算法]算法6:只有五行的Floyd最短路算法 暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计 ...