通过自己定义MVC的Controller的Json转换器解决日期序列化格式问题
今日,在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转换器解决日期序列化格式问题的更多相关文章
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象
一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...
- Asp.net MVC 中Controller返回值类型ActionResult
[Asp.net MVC中Controller返回值类型] 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必 ...
- mvc使用JsonResult返回Json数据
mvc使用JsonResult返回Json数据 controller 中定义以下方法: public JsonResult UpdateSingle(int id, string actionNa ...
- MVC中Controller控制器相关技术
第6章Controller相关技术 Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并 且负责协调Model与View之间的数椐传递,是ASP.NET MV ...
- Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互.RESTful则是一种软件架构风格.设 ...
- ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost
我们知道ASP.NET Core MVC中Controller的Action上可以声明HttpGet和HttpPost特性标签,来限制可以访问Action的Http请求类型(GET.POST等). 那 ...
- MVC 中Controller返回值类型ActionResult
下面列举Asp.net MVC中Controller中的ActionResult返回类型 1.返回ViewResult视图结果,将视图呈现给网页 public ActionResult About() ...
- 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的对象.数组或原始值 ...
- Django-choices字段值对应关系(性别)-MTV与MVC科普-Ajax发json格式与文件格式数据-contentType格式-Ajax搭配sweetalert实现删除确认弹窗-自定义分页器-批量插入-07
目录 models 字段补充 choices 参数/字段(用的很多) MTV与MVC模型 科普 Ajax 发送 GET.POST 请求的几种常见方式 用 Ajax 做一个小案例 准备工作 动手用 Aj ...
随机推荐
- forward 和redirect
http://www.cnblogs.com/davidwang456/p/3998013.html
- laravel启动过程简单解析
:first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...
- Django 中bootstrap的引用
bootstrap的优越性 如果你有基本的HTML+CSS,bootstrap其实就是在标签中加入具体的class来实现样式.和原生态的HTML+CSS需要先在head标签的style写样式或者引入外 ...
- 关于go get安装git golang项目时报错的处理办法
关于go get安装git golang项目时报错的处理办法 使用go get安装github上的项目时一般来说,不可避免会出错.各种错误的处理办法: 必须条件: 1.安装git并配置环境变量.下载地 ...
- 002.Kickstart部署之NFS架构
一 准备 1.1 完整架构:Kickstart+DHCP+NFS+TFTP+PXE 1.2 组件应用 Kickstart服务端IP:172.24.8.12 DHCP:提供客户端IP,网关,镜像路径等: ...
- 基于TFTP方式加载启动Linux内核
一.软硬件平台 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.UBOOT版本:U-Boot-2016.05,采用FDT和DM. 3.交换芯片MARVELL的88E63 ...
- python与mysql交互中的各种坑
开始学python 交互MySQLdb,踩了很多坑 第一个 %d format: a number is required, not str 参照以下博客: https://blog.csdn.net ...
- Eclipse块选择快捷键
快捷键:Shift+Alt+A 功能:可删除复制选中区域中的内容 效果图:
- 洛谷P3375 [模板]KMP字符串匹配
To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...
- Android _立体车库界面
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android=&q ...