實際上是Json格式化問題,我們應該在返回json的時候進行格式化,我們需要重寫系統的JsonResult類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Mvc; using System.Text.RegularExpressions; using System.Web; using System.Web.Script.Serialization; namespace App.Common { public class ToJsonResult : JsonResult { const string error = "該請求已被封鎖,因為敏感信息透露給第三方網站,這是一個GET請求時使用的。為了可以GET請求,請設置JsonRequestBehavior AllowGet。"; /// <summary> /// 格式化字符串 /// </summary> public string FormateStr { get; set; } public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (JsonRequestBehavior == JsonRequestBehavior.DenyGet && String.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)) { throw new InvalidOperationException(error); } HttpResponseBase response = context.HttpContext.Response; if (!String.IsNullOrEmpty(ContentType)) { response.ContentType = ContentType; } else { response.ContentType = "application/json"; } if (ContentEncoding != null) { response.ContentEncoding = ContentEncoding; } if (Data != null) { JavaScriptSerializer serializer = new JavaScriptSerializer(); string jsonstring = serializer.Serialize(Data); //string p = @"\\/Date\((\d+)\+\d+\)\\/"; string p = @"\\/Date\(\d+\)\\/"; MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString); Regex reg = new Regex(p); jsonstring = reg.Replace(jsonstring, matchEvaluator); response.Write(jsonstring); } } /// <summary> /// 將Json序列化的時間由/Date(1294499956278+0800)轉為字符串 /// </summary> private string ConvertJsonDateToDateString(Match m) { string result = string.Empty; string p = @"\d"; var cArray = m.Value.ToCharArray(); StringBuilder sb = new StringBuilder(); Regex reg = new Regex(p); for (int i = 0; i < cArray.Length; i++) { if (reg.IsMatch(cArray[i].ToString())) { sb.Append(cArray[i]); } } // reg.Replace(m.Value; DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(sb.ToString())); dt = dt.ToLocalTime(); result = dt.ToString("yyyy-MM-dd HH:mm:ss"); return result; } } }
創建Controller的基類,BaseController讓Controller去繼承Controller
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using App.Common; using App.Models.Sys; namespace App.Admin { public class BaseController : Controller { /// <summary> /// 獲取當前用戶Id /// </summary> /// <returns></returns> public string GetUserId() { if (Session["Account"] != null) { AccountModel info = (AccountModel)Session["Account"]; return info.Id; } else { return ""; } } /// <summary> /// 獲取當前用戶Name /// </summary> /// <returns></returns> public string GetUserTrueName() { if (Session["Account"] != null) { AccountModel info = (AccountModel)Session["Account"]; return info.TrueName; } else { return ""; } } /// <summary> /// 獲取當前用戶信息 /// </summary> /// <returns>用戶信息</returns> public AccountModel GetAccount() { if (Session["Account"] != null) { return (AccountModel)Session["Account"]; } return null; } protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior) { return new ToJsonResult { Data = data, ContentEncoding = contentEncoding, ContentType = contentType, JsonRequestBehavior = behavior, FormateStr = "yyyy-MM-dd HH:mm:ss" }; } /// <summary> /// 返回JsonResult.24 /// </summary> /// <param name="data">數據</param> /// <param name="behavior">行為</param> /// <param name="format">json中dateTime類型的格式</param> /// <returns>Json</returns> protected JsonResult MyJson(object data, JsonRequestBehavior behavior, string format) { return new ToJsonResult { Data = data, JsonRequestBehavior = behavior, FormateStr = format }; } /// <summary> /// 返回JsonResult42 /// </summary> /// <param name="data">數據</param> /// <param name="format">數據格式</param> /// <returns>Json</returns> protected JsonResult MyJson(object data, string format) { return new ToJsonResult { Data = data, FormateStr = format }; } /// <summary> /// 檢查SQL語句合法性 /// </summary> /// <param name="sql"></param> /// <returns></returns> public bool ValidateSQL(string sql, ref string msg) { if (sql.ToLower().IndexOf("delete") > 0) { msg = "查詢參數中含有非法語句DELETE"; return false; } if (sql.ToLower().IndexOf("update") > 0) { msg = "查詢參數中含有非法語句UPDATE"; return false; } if (sql.ToLower().IndexOf("insert") > 0) { msg = "查詢參數中含有非法語句INSERT"; return false; } return true; } } }
好了,我們運行,其實就是這么一回事!

