正确的时间不显示在json网格中,但在MVC编辑视图中的时间是正确的
问题描述:
我有一个显示电子邮件模板的JSON网格,但问题是显示的最后更改日期早于当前日期,但相同记录最后更改日期在MVC编辑视图中编辑该记录时正确显示。正确的时间不显示在json网格中,但在MVC编辑视图中的时间是正确的
JSON格式返回的日期为:日期(1362686659073)
但对于相同的记录日期编辑页面上是:2013年3月7日下午12点04分19秒即日期(1362638059000)
同一天约有13.5小时的差异。
这是我的代码返回数据,以JSON
TemplateGridExt ext = new TemplateGridExt();
ext.Count = client.GetPagedGridCountEmailTmpl(filter);
ext.Data = result.EmailTmpl_Vs.ToList();
return this.Json(ext, JsonRequestBehavior.AllowGet);
答
试图通过像串一些其他格式的数据,那么它应该工作的罚款。
试试这个代码 -
首先创建一个这样的类 -
public class TimeFormatter : DateTimeConverterBase
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return DateTime.Parse(reader.Value.ToString());
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString("yyyy/MM/dd"));//format for date
}
}
使用此代码JSON数据返回到您的视图 -
JsonSerializerSettings jSettings = new JsonSerializerSettings()
{
Formatting = Formatting.Indented,
DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
jSettings.Converters.Add(new TimeFormatter());
JsonSerializer.Create(jSettings);
return JsonConvert.SerializeObject(data, jSettings);//'data' is list of objects to return to view.
不要忘了包括有名称空间 -
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
+0
感谢@GurjeetSinghDB这工作。 – 2013-03-19 07:18:21
欢迎来到缓存。最简单的方法是将Action更改为HttpPost而不是HttpGet。 – leppie 2013-03-08 05:21:55