Json序列化,date类型转换后前端显示错误的解决方案
1.前台使用Jquery解决
(1)如果我们前台使用Jquery来解决这个问题的话,那么我们首先想到的是我们如何解析这个过程呢,当然我们就想到了自己写一个JavaScript脚本来解析这个过程,当然这个脚本不是我写的了,而是别人写的,自己拿过来用,脚本代码如下:
1 //by 韩迎龙
2
3 /**
4
5 * 对Date的扩展,将 Date 转化为指定格式的String
6
7 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
8
9 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
10
11 * eg:
12
13 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
14
15 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
16
17 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
18
19 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
20
21 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
22
23 使用:(eval(value.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"))).pattern("yyyy-M-d h:m:s.S");
24
25 */
26
27 Date.prototype.pattern = function (fmt) {
28
29 var o = {
30
31 "M+": this.getMonth() + 1, //月份
32
33 "d+": this.getDate(), //日
34
35 "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
36
37 "H+": this.getHours(), //小时
38
39 "m+": this.getMinutes(), //分
40
41 "s+": this.getSeconds(), //秒
42
43 "q+": Math.floor((this.getMonth() + 3) / 3), //季度
44
45 "S": this.getMilliseconds() //毫秒
46
47 };
48
49 var week = {
50
51 "0": "/u65e5",
52
53 "1": "/u4e00",
54
55 "2": "/u4e8c",
56
57 "3": "/u4e09",
58
59 "4": "/u56db",
60
61 "5": "/u4e94",
62
63 "6": "/u516d"
64
65 };
66
67 if (/(y+)/.test(fmt)) {
68
69 fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
70
71 }
72
73 if (/(E+)/.test(fmt)) {
74
75 fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[this.getDay() + ""]);
76
77 }
78
79 for (var k in o) {
80
81 if (new RegExp("(" + k + ")").test(fmt)) {
82
83 fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
84
85 }
86
87 }
88
89 return fmt;
90
91 }
(2)当我们写完上面的脚本之后,这时候我们就需要在页面中使用这个脚本的信息,那么我们如何使用这个信息,当然我们首先需要引用这个对象:
@*日期格式的引用*@
<script src="@Url.Content("~/Content/datapattern.js")"></script>
(3)这时候当我们引用完毕后,我们也就差最后一步了,这时候我们就需要设置easyUI显示数据的格式哪里调用上面我们书写的Json解析的脚本,代码如下:
1 frozenColumns: [[
2
3 { field: 'ck', checkbox: true }, //选择
4
5 { title: '主键', field: 'ID', width: 40, sortable: true }, //主键
6
7 { title: '角色名称', field: 'Realname', width: 100, sortable: true }, //登录名
8
9 { title: '角色类型', field: 'CategoryCode', width: 100, sortable: true }, //用户名
10
11 { title: '排序码', field: 'SortCode', width: 100, sortable: true },
12
13 { title: '创建人', field: 'CreateBy', width: 90, sortable: true },
14
15 {
16
17 title: '创建时间', field: 'CreateOn', width: 140, sortable: true,
18
19 formatter: function (value, row, index) {
20
21 return (eval(value.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"))).pattern("yyyy-M-d h:m:s");
22
23 }
24
25 },
26
27 { title: '最后修改人', field: 'ModifiedBy', width: 90, sortable: true },
28
29 { title: '修改时间', field: 'ModifiedOn', width: 140, sortable: true }
30
31 ]],
(4)最后我们可以看一下转换后的想过如图所示:
2.后台使用基类来解决
(1)上面我们说了第一种方法,那么我们现在来说第二种方法,第二种方法的话我们从标题就看出来了,我们是使用后台的基类来实现这个效果的,那么我们知道我们在以前的博客中我们建立了一个BaseController基仓储,我们在这里就需要用到基仓储了。
(2)在基仓储里面我们写了如下的方法,在这个方法中我们用到了一些处理时间的对象,大家可以自己研究一下:
(3)接下来我们就需要在我们的实现功能的控制器中调用这个方法来返回对象,角色控制器的代码如下:
1 /// <summary>
2
3 /// 获得角色的信息显示在角色列表中
4
5 /// </summary>
6
7 /// <returns>返回角色信息的Json对象</returns>
8
9 public ActionResult GetAllRoleInfos()
10
11 {
12
13 //实现对用户和多条件的分页的查询,rows表示一共多少条,page表示当前第几页
14
15 int pageIndex = Request["page"] == null ? 1 : int.Parse(Request["page"]);
16
17 int pageSize = Request["rows"] == null ? 10 : int.Parse(Request["rows"]);
18
19 string RealName = Request["RealName"];
20
21 int? Enabled = Request["Enabled"] == null ? -1 : int.Parse(Request["Enabled"]);
22
23 int? CategoryCode = Request["CategoryCode"] == null ? -1 : int.Parse(Request["CategoryCode"]);
24
25 int total = 0;
26
27 //封装一个业务逻辑层的方法来处理多条件查询的信息
28
29 RoleInfoQuery roleinfo = new RoleInfoQuery()
30
31 {
32
33 PageIndex = pageIndex,
34
35 PageSize = pageSize,
36
37 RealName = RealName,
38
39 Enabled = Enabled,
40
41 CategoryCode = CategoryCode,
42
43 Total = 0
44
45 };
46
47 var date = _roleInfo.loadSearchDate(roleinfo);
48
49 //构造Json对象返回
50
51 var result = new { total = roleinfo.Total, rows = date };
52
53 return JsonDate(result);
54
55 }
Json序列化,date类型转换后前端显示错误的解决方案的更多相关文章
- Android出现错误后改正后仍显示错误
今天编Android的时候,layout.xml出现了错误,改正后仍显示错误.试了很多方法. 后来,将原来的复制并删掉,然后再粘贴上去就可以了.
- struts2 前端显示错误信息
当我们显示错误信息的时候,会发现错误信息会以列表的形式显示,这样就不美观了,达不到我们想要的标准.所以我们可以用另外的方式输出错误信息. 例如我现在增加了两个错误信息: this.addFieldEr ...
- EF webapi json序列化 表间相互引用 无限循环问题解决方案
WebApiConfig.cs中加入 如下代码即可解决无限循环问题 var json = config.Formatters.JsonFormatter; // 解决json序列化时的循环引用问题 j ...
- RS交叉表自动汇总后百分比列显示错误之解决方案
可以说在从事Cognos开发的过程中,仅仅对数据展现而言,大多数用户使用最多的工具便是Report Studio了,此工具可以帮助我们快速的构建一些可供用户自主选择的数据报告.当然我个人认为没有什么开 ...
- 【玩转Golang】 自定义json序列化对象时,非法字符错误原因
由于前台web页面传来的日期对象是这样的格式“2010-11-03 15:23:22”,所以我安装网上查来的办法,自定义包装了time.Time对象,实现自己的Marshal和UnMarshal方法 ...
- SyntaxHighlighter行号显示错误问题解决方案
SyntaxHighlighter是根据代码中的换行符分配行号的.但是,如果一行代码或者注释比较长,在页面显示时需要分成多行显示,会出现行号对不上的问题,像这样: 通过设置CSS强制不换行,可以保证行 ...
- 记录一次OracleJDK开发的项目发部到Linux中使用OpenJDK启动后失败的错误的解决方案
一.现象 基于JAVA SpringBoot2.0.4的项目,发部后项目发部后,放到OpenJDK环境中运行时,提示下列错误: 2019-10-22 10:03:55 [main] WARN o.s ...
- Sublime Text 3 程序运行后中文显示乱码的解决方案
问题描述: 问题分析: 新建python文件,输入下面代码,测试发现发送给python解释器时,默认为cp936的编码方式,而py文件为UTF-8的编码方式,cp936和UTF-8的编码方式对于英文字 ...
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
随机推荐
- 【转】Qt下使用glut库
ps:这个说的很明白,尤其是win10环境下用mingw环境时编程时碰到的问题, 1.加 windows.h 2.在.pro 添加libs 博文地址:Qt下使用glut库 本人使用的环境 ...
- python 使用virtualenvrapper虚拟环境管理工具
centos 默认安装的python是2.6版本的 使用virtualenv 环境管理工具建立python虚拟环境的时候会遇到一些错误,DEPRECATION: Python 2.6 is no lo ...
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问
消息 15281,级别 16,状态 1,第 2 行SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/Open ...
- centos 6.8 安装 nginx-1.11.4
yum -y install gcc-c++ wget http://nginx.org/download/nginx-1.11.4.tar.gz wget https://www.openssl. ...
- ArrayList集合 、特殊集合
一.ArrayList集合 集合内可以放不同类型的元素 另:object类型为所有数据类型的基类 添加元素:.add(); 清空集合:al.clear(); 克隆集合:.clone(); 判断是否包含 ...
- webpack使用tree shaking的问题。及关于UglifyJs不支持ES6的解决方案。
webpack: plugins:[ new webpack.optimize.UglifyJsPlugin({ compress:{warning:true} }) ] 是的,一些dead code ...
- java的三大框架(一)
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate.似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和 ...
- Android 多线程处理之多线程用法大集合
handler.post(r)其实这样并不会新起线程,只是执行的runnable里的run()方法,却没有执行start()方法,所以runnable走的还是UI线程. 1.如果像这样,是可以操作ui ...
- [Beta] postmortem
设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决网站前端的数据处理以及获取问题,定义的很清楚,对于典型用户也比较清晰,因为主要只有一个用户,所以对于 ...
- CE 内存申请
char ch_ReadByte='H'; char *ptr_OneLineData; unsigned ); if ((ptr_OneLineData = (char *)malloc(bufsi ...