博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC5-3 Result分析
阅读量:7282 次
发布时间:2019-06-30

本文共 1181 字,大约阅读时间需要 3 分钟。

众多的Result

使用MVC进行开发,可以看到有ActionResult、ContentReuslt、JsonResult..等,今天对这些Result进行背后分析。它到底是如何做到的

ActionResult

在开发中大家都会遇到一个有趣的现象,使用ActionResult做返回类型,我们可以返回Json,View,Content及其它的Result, 为什么会做到这样呢?

分析一下,我们使用什么可以做到。可能有些人已经猜到了,抽象类和接口。接口的定义规则是I开头。那么这里并没有。毫无疑问就是抽象类了。下图可以看到,ActionResult其实就是一个抽象类,里面有一个抽象方法ExecuteResult。这里就毫无疑问了,返回类型ActionResult可以使用Json、Content、View等。是因为它们都继承了ActionResult并实现了ExecuteResult方法!

 

 

常用的Result原理解析

JsonResult

JsonResult是一个很常用的Result,直接Json(str)的方式非常的简单。

下图可以直观的看到JsonResult继承自ActionResult。这里印证了我们之间的猜测。实现了ExecuteResult方法。可以看到,拿到了HttpContext上下文对象。然后把Response的ConnType="application/json",使用JavaScriptSerializer进行序列化后再返回。

就这么简单。Json还有一个JsonRequestBehavior参数,设置此方法数据的安全性。默认把Get请求过滤掉的,这里可以看到构造函数进行了赋值。我们也可以手动更改

ContentResult

直接Content返回数据在MVC中也很常用,结合JsonResult的原理去看Content参数。这时候应该已经想到了它的背后是如何处理的了。

比较JsonResult,它更为简单。因为只是返回文本,参数有文本内容,返回文本类型与编码格式。调用Response.Write也没有什么好多说的

JavaScriptResult

JavaScriptResult看起来很酷,因为我们可以直接返回javascript代码,这让不少小伙伴感到兴奋,看一下背后是怎么做的

很简单,把Response.ContentType赋值为"application/x-javascript"然后Write。

FileResult

大家应该都已经可以猜到它的背后是如何处理的了。是不是WriteFile呢?

没错,确实是WriteFile。有六个重载所以代码也比较多,不过也没有什么神奇的地方,相信大家都可以理解

转载于:https://www.cnblogs.com/LiangSW/p/5815881.html

你可能感兴趣的文章
Angular 4.0从入门到实战
查看>>
性能测试--siege
查看>>
DNS原理和CentOS7上bind域名服务器配置详解
查看>>
从键盘输入一个班5个学生的分数,求和并输出
查看>>
HomeBrew的安装详细步骤
查看>>
js如何判断一个值是不是Array类型
查看>>
R的grep和grepl
查看>>
Linux mkdir
查看>>
Spark Pipeline
查看>>
Spark FPGrowth (Frequent Pattern Mining)
查看>>
二维vector基本使用
查看>>
节省微博互粉时间,使用全自动"一键关注"Chrome扩展程序
查看>>
iOS Getter 和Setter 注册xibcell
查看>>
安装Python的numpy库
查看>>
Linux系列:Ubuntu虚拟机设置固定IP上网(配置IP、网关、DNS、防止resolv.conf被重写)...
查看>>
linux中切换用户方式su和su -的区别
查看>>
php面向对象
查看>>
CHIL-SQL-IN 操作符
查看>>
des 加密 iOS
查看>>
XML 对xml文件的crud的增加 create操作 增加元素 增加属性
查看>>