3、看源码MVC中的Controllr的Json方法

无论ViewResult还是JsonResult都继承ActionResult,ActionResult里只有一个方法ExecuteResult

3、看源码MVC中的Controllr的Json方法_第1张图片

 1、Controllr的Json方法

实际上是new JsonResult,然后执行ExecuteResult方法,指定了ContentType-application/json ,然后将Data序列化成字符串写入stream

1.1、new JsonResult

大家看到JsonRequestBehavior.DenyGet这句话也就明白了(拒绝Get请求),为什么我们在写return Json的时候要加上这样一句话了JsonRequestBehavior = JsonRequestBehavior.AllowGet,Controllr的Json方法实际上是return JsonResult
3、看源码MVC中的Controllr的Json方法_第2张图片

3、看源码MVC中的Controllr的Json方法_第3张图片

1.2、覆写ActionResult的ExecuteResult方法
指定了ContentType-application/json ,然后将Data序列化成字符串写入response stream

3、看源码MVC中的Controllr的Json方法_第4张图片

所以我们了解了原理后,我们可以随意扩展的,只需要把数据放入response 指定好ContentType就可以了

 

你可能感兴趣的:(3、看源码MVC中的Controllr的Json方法)