自定义JsonResult处理JSON序列化DateTime类型数据(Ext4.2+ASP.NET MVC 4)

最近项目中前台页面使用Extjs4.2 ,在后台ASP.NET MVC4返回的DateTime类型的数据错返回的DateTime类型的JsonResult的结果中的值是“\/Date(1378446180000)\/此种格式,导致页面显示时间不正确(如下图创建时间列)

 

 

于是通过自定义JsonResult处理了JSON序列化DateTime类型数据,将处理方法贴于此,供需要的朋友交流学习!!!!

创建CustomResult类,继承JsonResult, 重写 ExecuteResult方法,代码如下:

public class CustomResult : JsonResult
   {
 
 
       public override void ExecuteResult(ControllerContext context)
       {
 
           if (context == null)
           {
               throw new ArgumentNullException("context");
           }
           
           
           HttpResponseBase response = context.HttpContext.Response;
           if (!string.IsNullOrEmpty(this.ContentType))
           {
               response.ContentType = this.ContentType;
           }
           else
           {
               response.ContentType = "application/json";
           }
           if (this.ContentEncoding != null)
           {
               response.ContentEncoding = this.ContentEncoding;
           }
           if (this.Data != null)
           {
               IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
               timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
               response.Write(JsonConvert.SerializeObject(this.Data,    Newtonsoft.Json.Formatting.Indented, timeFormat));
                
             
              
           }
        
        
       }
    
   }

  创建BaseController类,继承Controller类,重写Json方法

public class BaseController : Controller
   {
 
       protected override JsonResult Json(object data, string contentType, Encoding contentEncoding)
       {
 
 
           return new CustomResult
           {
               Data = data,
               ContentType = contentType,
               ContentEncoding = contentEncoding
           };
       
       }
 
   }

  这样就OK了(对了还要解释下,在CustomResult类里用到的序列化是Newtonsoft.Json.Converters),之后针对处理返回带时间格式的 项目中XXController直接继承BaseController 就可以了

处理完的表格的结果如下

 

 

posted @   沈阳晓东  阅读(721)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示