標籤:har content public code cut 研究 轉換 list 控制
今日,在MVC架構下使用EasyUI的datagrid載入資料時,服務端返回的Json日期格式為 /Date(1433088000000+0800)/ 。須要client進一步轉換。並且也不符合EasyUI經常使用的日期格式要求,為此,對MVC架構下的Controller做了一些研究。發現通過對Controller的Json方法進行擴充就能夠解決該問題。並且能夠通過進一步自己定義序列化類別,滿足不論什麼類型的資料的序列化格式要求。
要實現該目標,須要完畢三個步驟的工作:
1、建立Controller的衍生類別。引入自己定義JsonResult
2、建立JsonResult的衍生類別。實現Json日期格式的自己定義實現
3、全部須要實現自己定義日期序列化格式的控制器,需繼承於上述Controller的衍生類別
詳細代碼實現示比例如以下:
/// <summary>/// 通過重載ExecuteResult方法,實現自己定義序列化日期的實現/// </summary>public class VMEJsonResult : JsonResult{ public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } HttpResponseBase response = context.HttpContext.Response; if (this.Data != null) { JsonSerializerSettings setting = new JsonSerializerSettings(); // 設定日期序列化的格式 setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; response.Write(JsonConvert.SerializeObject(Data, setting)); } }}/// <summary> /// 通過建立Controller的衍生類別來引入自己定義的Json實現 /// </summary>public class VMEController : Controller{ protected override JsonResult Json(object data, string contentType, Encoding contentEncoding) { return new VMEJsonResult { Data = data, ContentType = contentType, ContentEncoding = contentEncoding }; } public new JsonResult Json(object data, JsonRequestBehavior jsonRequest) { return new VMEJsonResult { Data = data, JsonRequestBehavior = jsonRequest }; } public new JsonResult Json(object data) { return new VMEJsonResult { Data = data, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; }}/// <summary>/// 全部須要實現自己定義日期序列化效果的控制器。必須繼承於VMEController/// </summary>public class CouponController : VMEController{ public ActionResult Index() { return View(); } public ActionResult GetAllCouponTypes() { Hashtable hashtable = new Hashtable(); hashtable["sessionId"] = ""; string json = JsonHelper.Serialize(hashtable); string retJson = HttpHelper.PostForJson("http://localhost/vme", "CouponService.svc", "GetAllCouponTypes", json); string jsonResult = JsonHelper.GetString(retJson); List<CouponType> results = JsonHelper.DeserializeObject<List<CouponType>>(jsonResult); return Json(results, JsonRequestBehavior.AllowGet); }}
通過自己定義MVC的Controller的Json轉換器解決日期序列化格式問題