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

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

实际上是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;

        }



    }

}

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

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

你可能感兴趣的:(datagrid)