JSONResult引用某博客

http://www.cnblogs.com/JerryWang1991/archive/2013/03/08/2950457.html

最近开始用MVC做项目,在使用 JsonResult返回数据的时候,日期被反射成了/Date 1233455这种格式,遍查网上都是在客户端使用JS来处理这个问题的,这样的话,就需要在每一个涉及到日期的地方都做一次转换后,才能用来使用。

  于是我通过反编译Controller抽象类以及JsonResult类后发现:

  jsonresult中处理对象到JSON字符串的方法:

    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }
        if ((this.JsonRequestBehavior == JsonRequestBehavior.DenyGet) && string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
        {
            throw new InvalidOperationException(MvcResources.JsonRequest_GetNotAllowed);
        }
        HttpResponseBase response = context.HttpContext.Response;
        if (!string.IsNullOrEmpty(this.ContentType))
        {
            response.ContentType = this.ContentType;
        }
        else
        {
            response.ContentType = "application/json";
        }
        if (this.ContentEncoding != null)
        {
            response.ContentEncoding = this.ContentEncoding;
        }
        if (this.Data != null)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            response.Write(serializer.Serialize(this.Data));
        }
    }

在这个方法里使用的是JavaScriptSerializer这个来序列化对象到JSON。

于是我自定义了一个类,继承JSONRESULT类

并将上面的方法从写 ,用newton.json替换javascriptSerializer

替换代码如下:

if (this.Data != null)
        {
            IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
        timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
            response.Write(JsonConvert.SerializeObject(this.Data, Newtonsoft.Json.Formatting.Indented, timeFormat, x););
        }

这样处理了日期的JSON序列化。

然后再重新定义一个Controller,命名为 JsonController,且设置为抽象类。

然后重写方法:

protected internal virtual JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior)
{
    return new JsonResult { Data = data, ContentType = contentType, ContentEncoding = contentEncoding, JsonRequestBehavior = behavior };
}

将 JsonResult改为我们继承JSONResult并重写了ExecuteResult方法的类,就大工告成了!

以后只要JsonResult涉及到返回日期的,就可以让控制器继承我们自定义的这个类,由此解决日期问题。

以上只解决了日期JSON后在JS中使用显示的问题,未解决日期参与运算的问题,但是根据我目前的经历,JS中日期参与预算的时间还比较少,所以能解决用于显示的问题,就很OK了,

ASP.NET MVC还有很多好玩的特性,大家一起摸索吧!

时间: 2024-11-15 08:12:07

JSONResult引用某博客的相关文章

localparam和parameter的区别 --引用特权博客

Verilog代码可移植性设计 1.       参数定义 localparam,实例代码如下: module tm1( clk,rst_n, pout ); input clk; input rst_n; output[M:0] pout; localparam N = 4; localparam M = N-1; reg[M:0] cnt; always @(posedge clk or negedge rst_n) if(!rst_n) cnt <= 0; else cnt <= cnt

博客园如何加目录

转自:https://www.cnblogs.com/ning-wang/p/7656847.html [1]文章头部加目录 1.1 效果展示 1.2 代码 <script language="javascript" type="text/javascript"> // 生成目录索引列表 // ref: http://www.cnblogs.com/wangqiguo/p/4355032.html // modified by: zzq function

C++中引用(&amp;)的用法和应用实例 - blue—— - 博客园

C++中引用(&)的用法和应用实例 - blue—— - 博客园 http://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html

从零开始,搭建博客系统MVC5+EF6搭建框架(3),添加Nlog日志、缓存机制(MemoryCache、RedisCache)、创建控制器父类BaseController

一.回顾系统进度以及本章概要 目前博客系统已经数据库创建.以及依赖注入Autofac集成,接下来就是日志和缓存集成,这里日志用的是Nlog,其实还有其他的日志框架如log4,这些博客园都有很多介绍,这里就不说了,缓存机制用的是微软自带的MemoryCache和比较流行Redis,这里我也只是了解使用,没有做更升入的研究,以后好好学一下Redis,然后就是实现一个BaseController父类用来重写JsonResult方法为的是返回时间格式问题,默认json返回的时间格式是Date(84923

MetaWeblog博客客户端工具之Windows Live Writer

吐槽&注意的坑: 刚听说了有这么一个东西,据说Windows Live Writer开源之后就改名为Open Live Writer,我以为Open Live Writer就要比Windows Live Writer要好于是就去下了Open Live Writer,然而我还是native了- 我说我装个插件吧,去官网一看,据说九个月没更新了,娘的coming了九个月-! 中英文这种问题就不吐槽了,按照网上的办法Open Live Writer安装插件根本装不上,因为默认安装的时候没有让选择安装目

使用Django+MySQL+Apache+Linux创建简单的博客

本教程根据慕课网<Django入门与实践>编写 基础知识 什么是django? Django是一个基于Python的高级Web开发框架, 特点:高效,快速,高度集成(不用自己弄底层),免费,开源 上网的流程 输入URL→向目标url发送http请求→服务器把页面响应给浏览器(通过后台编写的代码处理请求)→浏览器解析获取到的页面源代码文档(所以看到的不是html文档)→看到网页 目录结构 项目项目目录结构. ├── manage.py与项目进行交互的命令行工具集的入口(项目管理器) └── my

02-大鸭梨博客系统数据库设计及Dapper的使用

毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配合.数据库设计是整个系统的根基,它关乎系统功能的实现.稳定性.扩展性等多个方面,可见数据库设计的重要性. 那么好的数据库设计应该具备什么样的基本条件呢,大致有这么几点: 1.充分体现系统的需求 不管是数据库设计还是功能设计,我们最终的目的都是要实现客户的业务需求,所以数据库设计的第一准则就是要符合业

android fragment 博客 学习记录

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API,如果你还不了解,请看:Android Fragment 真正的完全解析(上). 本篇将介绍上篇博客提到的:如何管理Fragment回退栈,Fragment如何与Activity交互,Fragment与Activity交互的最佳实践,没有视图的Fragment的用处,使用Fragment创

Coding.net代码托管空间申请与使用-安装并运行WordPress博客

参考: http://www.freehao123.com/coding-net/ Coding.net这是一个国内新兴的代码托管平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社交功能,在线运行环境支持Java.Ruby.Node.js.PHP.Python.Go等多种语言,每个账号可以创建1000个项目. Coding.net与Github不同的是,免费配额并不区分共有项目和私有项目.每个项目运行空间1G,需要指出的是coding.net的初衷并非用来建站,而是一个协作开