因mvc控制器返回類型JsonResult 在處理對象轉JSON的時候,對日期的格式化處理並不太符合要求,所以重新繼承抽象類ActionResult使用Newtonsoft.Json來系列化
using System; using System.Text; using System.Web; using System.Web.Mvc; using Newtonsoft.Json; namespace Comon { public class JsonNetResult : ActionResult { /// <summary> /// 在靜態構造函數中設置JsonNet的時間處理方式 /// </summary> static JsonNetResult() { JsonSerializerSettings settings = new JsonSerializerSettings(); JsonConvert.DefaultSettings = () => { //日期類型默認格式化處理 settings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat; settings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; return settings; }; } /// <summary>初始化 <see cref="T:System.Web.Mvc.JsonResult" /> 類的新實例。</summary> public JsonNetResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet; } /// <summary>獲取或設置內容編碼。</summary> /// <returns>內容編碼。</returns> public Encoding ContentEncoding { get; set; } /// <summary>獲取或設置內容的類型。</summary> /// <returns>內容的類型。</returns> public string ContentType { get; set; } /// <summary>獲取或設置數據。</summary> /// <returns>數據。</returns> public object Data { get; set; } /// <summary>獲取或設置一個值,該值指示是否允許來自客戶端的 HTTP GET 請求。</summary> /// <returns>一個值,指示是否允許來自客戶端的 HTTP GET 請求。</returns> public JsonRequestBehavior JsonRequestBehavior { get; set; } /// <summary>通過從 <see cref="T:System.Web.Mvc.ActionResult" /> 類繼承的自定義類型,啟用對操作方法結果的處理。</summary> /// <param name="context">執行結果時所處的上下文。</param> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="context" /> 參數為 null。 /// </exception> public override void ExecuteResult(ControllerContext context) { if (context == null) throw new ArgumentNullException(nameof(context)); if (JsonRequestBehavior == JsonRequestBehavior.DenyGet && string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)) throw new InvalidOperationException("不允許使用Get方法訪問"); HttpResponseBase response = context.HttpContext.Response; response.ContentType = string.IsNullOrEmpty(ContentType) ? "application/json" : ContentType; if (ContentEncoding != null) response.ContentEncoding = ContentEncoding; if (Data == null) return; response.Write(JsonConvert.SerializeObject(Data)); } } }
在靜態構造函數里面設置了系列化日期的格式