在ASP.NET MVC Controller上使用Json()方法给我带来了麻烦-使用服务器时间,将此方法中引发的每个DateTime都转换为UTC。
现在,有没有一种简单的方法可以告诉ASP.NET MVC Json序列化器停止将DateTime自动转换为UTC?正如在此问题上所指出的那样,使用DateTime.SpecifyKind(date,DateTimeKind.Utc)重新分配每个变量都可以解决问题,但是显然我不能在每个DateTime变量上手动进行此操作。
那么是否可以在Web.config中进行设置,并使JSON序列化程序将每个日期都视为UTC时间?
该死,看来我最近注定要在StackOverflow上回答我自己的问题。igh,这是解决方案:
protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior) { return new ServiceStackJsonResult { Data = data, ContentType = contentType, ContentEncoding = contentEncoding }; } public class ServiceStackJsonResult : JsonResult { public override void ExecuteResult(ControllerContext context) { HttpResponseBase response = context.HttpContext.Response; response.ContentType = !String.IsNullOrEmpty(ContentType) ? ContentType : "application/json"; if (ContentEncoding != null) { response.ContentEncoding = ContentEncoding; } if (Data != null) { response.Write(JsonSerializer.SerializeToString(Data)); } } }
protected void Application_Start() { JsConfig.DateHandler = JsonDateHandler.ISO8601; JsConfig.TreatEnumAsInteger = true; // rest of the method... }
该链接帮助