zoukankan      html  css  js  c++  java
  • 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;
            }
    
        }
    }

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

  • 相关阅读:
    【LSA推荐算法】简单理解
    【数据分析案例】用户消费行为
    【Django】rest_framework 序列化自定义替换返回值
    【Django+Element UI】使用一个接口文件,搞定分页获取数据,模糊查询后分页获取数据
    【Django后端分离】使用element-ui文件上传
    JavaScript数组去重方法总结
    MySQL索引优化--对前缀索引使用like模糊匹配时的实际索引选择
    Linux命令--top
    Linux命令--free
    MySQL中的表的列设置为varchar(0)或char(0)
  • 原文地址:https://www.cnblogs.com/ymnets/p/3439324.html
Copyright © 2011-2022 走看看