ASP.NET MVC中JSON.NET代替JavaScriptSerializer

使用JSON.NET 代替(The benefit of using JsonNetResult over the built in JsonResult is you get a better serializer (IMO [:)]) and all the other benefits of Json.NET like nicely formatted JSON text.)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using Newtonsoft.Json;
using System.Web;
//http://stackoverflow.com/questions/15816319/what-does-asp-net-mvc-4-0-used-for-json-serialization
//http://stackoverflow.com/questions/7109967/using-json-net-as-default-json-serializer-in-asp-net-mvc-3-is-it-possible
//http://stackoverflow.com/questions/15738691/newtonsoft-json
//http://wingkaiwan.com/2012/12/28/replacing-mvc-javascriptserializer-with-json-net-jsonserializer/

/**
 * 版权所有 All Rights Reserved
 *
 * @author Irving_Zhou
 * @description ASP.NET MVC 使用Newtonsoft.Json
 * @date 2013年10月20日10:17:45
 * @version 1.0.0
 * @email zhouyongtao@outlook.com
 * @blog http://www.cnblogs.com/Irving/
 * @refer http://james.newtonking.com/archive/2008/10/16/asp-net-mvc-and-json-net
 */
namespace NRainel.Ajax
{
    public class JsonNetResult : ActionResult
    {
        /// <summary>
        /// 编码格式
        /// </summary>
        public Encoding ContentEncoding { get; set; }
        /// <summary>
        /// 请求头
        /// </summary>
        public string ContentType { get; set; }
        /// <summary>
        /// 请求数据
        /// </summary>
        public object Data { get; set; }
        /// <summary>
        /// 序列化转换器
        /// </summary>
        public JsonSerializerSettings SerializerSettings { get; set; }
        /// <summary>
        /// 序列化格式化
        /// </summary>
        public Formatting Formatting { get; set; }

        public JsonNetResult()
        {
            SerializerSettings = new JsonSerializerSettings();
        }

        /// <summary>
        /// 重写执行上下文
        /// </summary>
        /// <param name="context"></param>
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
                throw new ArgumentNullException("context");
            HttpResponseBase response = context.HttpContext.Response;
            response.ContentType = !string.IsNullOrEmpty(ContentType) ? ContentType : "application/json";
            if (ContentEncoding != null)
                response.ContentEncoding = ContentEncoding;
            if (Data != null)
            {
                JsonTextWriter writer = new JsonTextWriter(response.Output) { Formatting = Formatting };
                JsonSerializer serializer = JsonSerializer.Create(SerializerSettings);
                serializer.Serialize(writer, Data);
                writer.Flush();
            }
        }
    }
}

JS日期转换

// 为 jQuery 扩展一个转换日期的方法
jQuery.extend(
            {
                toDate: function (date) {
                    var date = new Date(parseInt(date.substring(6)));
                    return date;
                },
                toDateString: function (jsDate) {
                    return "\/Date(" + jsDate.getTime() + "+0000)\/";
                }
            }
        );

Refer:http://james.newtonking.com/archive/2008/10/16/asp-net-mvc-and-json-net