Loading

解析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来自己定义日期格式。

 

posted @ 2015-03-18 10:47  歪头儿在北京  阅读(9689)  评论(3编辑  收藏  举报