今日,在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转换器解决日期序列化格式问题的更多相关文章

  1. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

  2. Asp.net MVC 中Controller返回值类型ActionResult

    [Asp.net MVC中Controller返回值类型] 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必 ...

  3. mvc使用JsonResult返回Json数据

    mvc使用JsonResult返回Json数据   controller 中定义以下方法: public JsonResult UpdateSingle(int id, string actionNa ...

  4. MVC中Controller控制器相关技术

    第6章Controller相关技术 Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并 且负责协调Model与View之间的数椐传递,是ASP.NET MV ...

  5. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)

    很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互.RESTful则是一种软件架构风格.设 ...

  6. ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost

    我们知道ASP.NET Core MVC中Controller的Action上可以声明HttpGet和HttpPost特性标签,来限制可以访问Action的Http请求类型(GET.POST等). 那 ...

  7. MVC 中Controller返回值类型ActionResult

    下面列举Asp.net MVC中Controller中的ActionResult返回类型 1.返回ViewResult视图结果,将视图呈现给网页 public ActionResult About() ...

  8. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List<T>转JSON,JSON转List<T>,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

  9. Django-choices字段值对应关系(性别)-MTV与MVC科普-Ajax发json格式与文件格式数据-contentType格式-Ajax搭配sweetalert实现删除确认弹窗-自定义分页器-批量插入-07

    目录 models 字段补充 choices 参数/字段(用的很多) MTV与MVC模型 科普 Ajax 发送 GET.POST 请求的几种常见方式 用 Ajax 做一个小案例 准备工作 动手用 Aj ...

随机推荐

  1. [ 高危 ] my存在sql注入

    rank和金币这算RMB为700 这算一个手机端的网站,往往手机端的功能和PC端的功能可能代码写的不一样,接口不一. 登录后,在xxx.maoyan.com/authcenter/wxpay/m?ap ...

  2. BZOJ-4-2038: [2009国家集训队]小Z的袜子(hose)-莫队

    思路 :分块 思想 处理离线查询操作  对查询进行排序 在同一块内的按照 r 进行排序 不同块 的按照 L进行排序. #include<bits/stdc++.h> using names ...

  3. Yahoo Programming Contest 2019.E.Odd Subrectangles(思路 线性基)

    题目链接 \(Description\) 给定一个\(n\times m\)的\(01\)矩阵.求任意选出\(r\)行.\(c\)列(共\(2^{n+m}\)种方案),使得这\(r\)行\(c\)列的 ...

  4. 05 树莓派安装飞鸽传书 Iptux

    2017-08-22 14:47:06 进入页面:https://packages.debian.org/search?keywords=iptux   选择“stretch (stable) ”—— ...

  5. Django构建简介

    MVC框架 MVC:Model View Controller,是软件工程中的一种软件构架模式,把软件系统分为三个基本模型,具有耦合性低.重用性高.生命周期成本低等优点 Model:模型,操作数据库 ...

  6. 检测版本更新,iOS

    检测版本更新的方法. //检查新版本 更新 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ), ^ ...

  7. PAT-Top1001. Battle Over Cities - Hard Version (35)

    在敌人占领之前由城市和公路构成的图是连通图.在敌人占领某个城市之后所有通往这个城市的公路就会被破坏,接下来可能需要修复一些其他被毁坏的公路使得剩下的城市能够互通.修复的代价越大,意味着这个城市越重要. ...

  8. js三种经典排序:冒泡排序、插入排序、快速排序

    冒泡排序: function bubbleSort(arr){ for(var r=1;r<arr.length-1;r++){ for(var i=0;i<arr.length-r;i+ ...

  9. .net 后台获取CheckBoxList的值

    版权声明:本文档可以随意转载,我愿意和大家共同分享,共同进步. http://blog.csdn.net/u014479921/article/details/73649799 1.前台的多选控件 & ...

  10. Chars模拟弱网测试

    1.打开chars,选择[proxy]-[throttle settings] 2.勾选[enable throttling],并配置.