通過自己定義MVC的Controller的Json轉換器解決日期序列化格式問題

來源:互聯網
上載者:User

標籤:har   content   public   code   cut   研究   轉換   list   控制   

今日,在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轉換器解決日期序列化格式問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.