前言
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來自己定義日期格式。