Asp.net mvc ASP.net MVC-带有DateTime的模型,正在尝试为jqGrid的Json()序列化
我有一个模型Asp.net mvc ASP.net MVC-带有DateTime的模型,正在尝试为jqGrid的Json()序列化,asp.net-mvc,json,datetime,serialization,jqgrid,Asp.net Mvc,Json,Datetime,Serialization,Jqgrid,我有一个模型 [DataContract] public class DeviceModel { [DataMember(Order=1)] public string Alias { get; set; } [DataMember(Order = 2)] public string Location { get; set; } [DataMember(Order = 3)]
[DataContract]
public class DeviceModel
{
[DataMember(Order=1)]
public string Alias { get; set; }
[DataMember(Order = 2)]
public string Location { get; set; }
[DataMember(Order = 3)]
public string State { get; set; }
[DataMember(Order = 4)]
public DateTime? DateCreated { get; set; }
[DataMember(Order = 5)]
public string RatePlan { get; set; }
public DeviceModel()
{
Alias = null;
Location = null;
State = null;
DateCreated = null;
RatePlan = null;
}
}
如您所见,此模型包含一个DateTime对象。我使用这个模型作为我们正在使用的jqGrid插件的数据。唯一的问题是,DateCreated字段在网格加载时显示“/Date(1285128000000)/”而不是可读日期。我已经阅读了这里的其他一些帖子,但我觉得它们不太适合我所寻找的内容。我正在寻找一种方法,将这个DateTime字段格式化为人类可读的字符串?建议?JSON只知道两种基本数据类型:字符串和数字,以及no
Date
type。数据协定序列化程序支持。例如DateTime
,DateTimeOffset
,TimeSpan
,Guid
,Uri
,XmlQualifiedName
。如果您将数据发送到客户机,该客户机还使用数据协定序列化程序来反序列化数据,那么您可以使用数据类型中的任何数据,而不会出现任何问题
问题的最简单解决方案是在发送数据之前在服务器上准备数据。如果您将只序列化只有字符串和数字作为属性或数组的对象/IList
,那么您就不会有问题。例如,默认情况下,jqGrid等待ISO日期格式的数据:Y-m-d
,数字分别为Y
、m
和d
。如果您将服务器上的数据转换为Y-m-d格式,并在相应的colModel
定义中使用formatter:'date'
,您的问题将得到解决
您还可以使用和在客户端解决问题。尝试如中所述解决问题的方法有多种:服务器端和客户端。你能用jqGrid代码示例的1)定义来回答你的问题吗?2)代码示例展示了在将数据发送回客户端之前,如何在服务器端序列化数据。3) 仅包含日期或日期与时间信息的
DateTime
值?谢谢!我打算使用自定义格式化程序,但我认为在服务器端处理数据是解决这个问题的方法。再次感谢@DavidAndroidDev:刚才我发布了一个建议(请参阅),建议对jqGrid代码进行一些小的修改,以支持Microsoft针对DateTime
类型的序列化格式:“/Date(1285128000000)/”。也许很快jqGrid就会移植它。