通过自定义MVC的Controller的Json转换器解决日期序列化格式问题
来源:互联网 发布:淘宝活动宝贝名称12以 编辑:程序博客网 时间:2024/05/12 23:19
今日,在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("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); }}
0 0
- 通过自定义MVC的Controller的Json转换器解决日期序列化格式问题
- 解决JSON序列化日期格式问题
- ServiceStack.Text json中序列化日期格式问题的解决
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题(Newtonsoft.Json)
- Json日期格式的问题
- Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
- spring MVC框架下Controller发送JSON格式的数据
- Spring MVC springmvc学习笔记--json--返回json的日期格式问题
- 将表单序列化之后变成的json格式的数据无法通过Ajax发送到后台的解决
- MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)
- spring MVC自定义日期转换器
- Json.NET序列化日期格式差异问题
- 返回json的日期格式问题
- springmvc返回json的日期格式问题
- 解决Struts2 json-plugin Date或Timestamp等日期格式带T的问题
- 解决Struts2 json-plugin Date或Timestamp等日期格式带T的问题
- 解决Struts2 json-plugin Date或Timestamp等日期格式带T的问题
- springmvc学习笔记--json--返回json的日期格式问题
- Oracle中Rownum的使用技巧与注意事项
- P2P网贷中的4种理财业务模式
- perror函数
- win7下JDK环境变量配置
- 如何用好消息推送(push)做APP运营
- 通过自定义MVC的Controller的Json转换器解决日期序列化格式问题
- 剑指off-从尾到头打印
- 树莓派开发入门
- Android 自定义适配器
- 两个很有用的进程间通信函数popen,pclose
- Struts2入门示例教程
- Golang 工程组织
- WAF(Web Appllication Firewall)网络应用防火墙
- canvas初级示例