MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)

来源:互联网 发布:聊天社交软件排行 编辑:程序博客网 时间:2024/04/29 20:01
实际上是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;        }    }}

好了,我们运行,其实就是这么一回事!

0 0
原创粉丝点击