今日,在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. Ubuntu18.04上安装java

    安装java8 sudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-j ...

  2. 三次Java实验整理汇报:

    *第一节 eclipse操作,建Javaproject项目(可直接用中文名命名)->建包与类(名字相同) ->public static void main(String[] args){ ...

  3. day27 软件开发规范,以及面相对象回顾

    面向对象所有内容回顾: # 面向对象 # 类 :一类具有相同属性和方法的事物 #类的定义:class #类中可以定义的方法种类: #普通方法 self 对象 #类方法 cls @classmethod ...

  4. 初心不负 笔记-JS高级程序设计-引用类型篇-Array

    ES3方法集合: 1join()方法,将一个数组里面的所有元素转换成字符串,然后再将他们连接起来返回一个字符串,通过制定的符号,默认值为逗号.不会改变原数组 ,,,,]; a.join(); &quo ...

  5. 浅谈solr

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...

  6. springboot2 config_toolkit 并且设置全局获取数据GlobalUtil

    本文只贴相关代码段,完整代码请移步至本人github,若是喜欢,可以star给予支持 作者:cnJun 博客专栏: https://www.cnblogs.com/cnJun/ 本文实现目标 重要的配 ...

  7. shell脚本中的set -e和set -o pipefail

    工作中经常在shell脚本中看到set的这两个用法,但就像生活中的很多事情,习惯导致忽视,直到出现问题才引起关注. 1. set -eset命令的-e参数,linux自带的说明如下:"Exi ...

  8. jquery利用正则表达式验证密码,手机号(主要是使用方法,正则表达式网上一搜一堆)

    var mobile = $("#UserMobile").val(); if (mobile != "") { }-\d{}|\d{}-\d{,})|([|| ...

  9. 英语口语练习系列-C33-露营-谈论日期-离思

    词汇-露营 Camping camping 露营 campground camping camper picnic bonfire backpack tent public campground co ...

  10. 【DWM1000】 code 解密7一ANCHOR接收到BLINK

    接着之前ANCHOR的代码分析,但接收到无线数据,应该执行如下代码 case TA_RX_WAIT_DATA :   //already recive a message                ...