解析ActionResult子类JsonResult

Posted cjm123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析ActionResult子类JsonResult相关的知识,希望对你有一定的参考价值。

 

前言

       MVC我是11开始使用的,当时还是在上地软件园一小型互联网公司,当时是MVC2.0+Linq to sql。后来接着学习MVC3,MVC3的出现确实让我有种眼前一亮的感觉,期间我不断的写各种demo,一直到现在再看MVC时就有点生疏了,有一年多没用了,好多知识很细节都遗忘了。

 

看到同事的代码

 

       前几天看到同事的代码, 其中看到了他对Json的用法,大致思路就是从数据库返回结果集,然后用自定义JsonHelper把结果集处理成Json字符串返回给客户端使用。也就是说把json字符串放入 return Json(strJson);

      

       看完就觉的不对劲,MVC Json是这样用? 那么大家都知道JsonResult内部其实是使用javascriptSerializer 来序列化结果集的, 也就是说你直接把结果集扔进去,返回给客户端就已经是Json对象了,不需要你再手动处理,实在是多此一举。

 

正确使用

技术分享图片
public JsonResult GetAllStudents()
        {
            var students = new List<Student>
            {
                new Student(){ID  =1,Name = "张三",Age =20, Birthday = DateTime.Now},
                new Student(){ID  =2,Name = "李四",Age =20, Birthday = DateTime.Now}
            };

            var result = new JsonResult();
            result.Data = students;
            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            return result;

        }
技术分享图片


JsonResult对日期类型的序列化

技术分享图片

    想到这一步时以前也遇到过没去探究, 昨儿一个同事问我这个问题,以前的做法都是在js中直接处理,这样就是麻烦些,后续用到日期的地方都需要在js中处理, 那么现在的解决方法就是自己重写JsonResult, 然后使用Newtonsoft.Json来自己定义日期格式。

 


以上是关于解析ActionResult子类JsonResult的主要内容,如果未能解决你的问题,请参考以下文章

动作方法

ActionResult的其它返回值

ActionResult 扩展不适用于 Page() ActionResult 方法

ActionResult的返回类型

Json.Net 和 ActionResult

如何使用 ActionResult 发送抽象类型的集合