如何处理ASP.NET MVC5 返回JsonResult DateTime类型格式化问题

本文介绍如何在ASP.NET MVC中使用Newtonsoft.Json库自定义JSONResult,以解决DateTime类型的字段在返回JSON数据时的格式问题。通过创建JsonNetResult类并重写ExecuteResult方法,可以将日期格式统一为yyyy-MM-dd HH:mm:ss。

1、问题

ASP.NET MVC在返回JSON对象的时候,DateTime类型默认返回的是:/Date("xxxxxxxxxxxx")/
在这里插入图片描述

2、解决

使用Newtonsoft.Json 对日期进行格式化,首先在项目中安装Newtonsoft.Json

2.1、自定义一个JsonResult的子类

重写JsonResultExecuteResult方法

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace JNET.Web.Infrastructure.Convert
{
    public class JsonNetResult: JsonResult
    {
        /// <summary>
        /// 日期格式
        /// </summary>
        public string DateFormatStr { get; set; } = "yyyy-MM-dd HH:mm:ss";
        public JsonNetResult()
        {
        }
        public JsonNetResult(object data)
        {

        }
        public override void ExecuteResult(ControllerContext context)
        {
            HttpResponseBase response = context.HttpContext.Response;
            if (string.IsNullOrEmpty(this.ContentType))
            {
                response.ContentType = "application/json";
            }
            else
            {
                response.ContentType = this.ContentType;
            }
            if (ContentEncoding != null)
                response.ContentEncoding = ContentEncoding;
            if (Data != null)
            {
                JsonTextWriter writer = new JsonTextWriter(response.Output) { Formatting = Formatting.Indented, DateFormatString=DateFormatStr };
                JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings());
                serializer.Serialize(writer, Data);
                writer.Flush();
            }
        }
    }
}

2.1、定义BaseController

定义BaseController重写JsonResult方法

BaseController代码:

public class BaseController: Controller
    {
     
          /// <summary>
        /// 重写JsonResult
        /// </summary>
        /// <param name="data"></param>
        /// <param name="contentType"></param>
        /// <param name="contentEncoding"></param>
        /// <param name="behavior"></param>
        /// <returns></returns>
        protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
        {
            return new JsonNetResult
            {
                Data = data,
                ContentType = contentType,
                ContentEncoding = contentEncoding,
                JsonRequestBehavior = behavior,
                DateFormatStr= "yyyy-MM-dd HH:mm:ss"
            };
        }
        /// <summary>
        /// 自定义JSON返回
        /// </summary>
        /// <param name="data"></param>
        /// <param name="behavior"></param>
        /// <param name="DateFormatStr"></param>
        /// <returns></returns>
        protected JsonResult ResultJson(object data, JsonRequestBehavior behavior, string DateFormatStr)
        {
            return new JsonNetResult
            {
                Data = data,
                JsonRequestBehavior = behavior,
                DateFormatStr= DateFormatStr
            };
        }
        /// <summary>
        /// 自定义JSON返回
        /// </summary>
        /// <param name="data"></param>
        /// <param name="behavior"></param>
        /// <returns></returns>
        protected JsonResult ResultJson(object data, JsonRequestBehavior behavior)
        {
            return new JsonNetResult
            {
                Data = data,
                JsonRequestBehavior = behavior
            };
        }
        /// <summary>
        /// 自定义JSON返回
        /// </summary>
        /// <param name="data"></param>
        /// <param name="DateFormatStr"></param>
        /// <returns></returns>
        protected JsonResult ResultJson(object data, string DateFormatStr)
        {
            return new JsonNetResult
            {
                Data = data,
                DateFormatStr = DateFormatStr
            };
        }
        /// <summary>
        /// 自定义JSON返回
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        protected JsonResult ResultJson(object data)
        {
            return new JsonNetResult
            {
                Data = data
            };
        }
    }

3、使用

在对应的Controller中继承BaseController

       /// <summary>
        /// 返回列表数据
        /// </summary>
        /// <returns></returns>
        public JsonResult ListData()
        {
            List<Office> list = _officeService.GetAllEntity();
            return this.ResultJson(list, JsonRequestBehavior.AllowGet);
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warybee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值