通过自定义MVC的Controller的Json转换器解决日期序列化格式问题

今日,在MVC框架下使用EasyUI的datagrid加载数据时,服务端返回的Json日期格式为/Date(1433088000000+0800)/ ,,需要客户端进一步转换,而且也不符合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("", "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转换器解决日期序列化格式问题

相关文章:

你感兴趣的文章:

标签云: