我正在使用EF来使用匿名类型查询数据库。
这里是我用于EF的代码
public JsonResult OverdueEventsCustom()
{
var eventCustomOverdue = _eventCustomRepository.FindOverdueEventsCustom();
return Json(eventCustomOverdue, JsonRequestBehavior.AllowGet);
}
public IQueryable<dynamic> FindOverdueEventsCustom()
{
DateTime dateTimeNow = DateTime.UtcNow;
DateTime dateTomorrow = dateTimeNow.Date.AddDays(1);
return db.EventCustoms.Where(x => x.DateTimeStart < dateTomorrow)
.Select(y => new { y.EventId, y.EventTitle, y.DateTimeStart});
}
检查使用调试器我看到属性采用这种格式
Date = {16/08/2012 00:00:00}
JSON的结果是
[{
"EventId": 1,
"EventTitle": "Homework Math",
"DateTimeStart": "\/Date(1345108269310)\/"
}, {
"EventId": 4,
"EventTitle": "Homework help with Annie",
"DateTimeStart": "\/Date(1345108269310)\/"
}, {
"EventId": 6,
"EventTitle": "Physic laboratory",
"DateTimeStart": "\/Date(1345108269310)\/"
}]
我需要这种格式的json
"DateTimeStart": "(16/08/2012)"
知道我在这里做错了吗?谢谢你的帮助
相关文章
http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx
答案 0 :(得分:1)
"\/Date(1345108269310)\/"
是将日期传递给javascript的正确方法。我看到它的方式,你有两个选择:
如果您没有明确需要将值作为日期,则可以将字符串传递给JSON变量,其中包含漂亮的打印日期。 有点像:
DateTimeStart: String.Format("{0: dd-MM-yyyy}", myDate)
如果您仍然需要在javascript中使用变量aa日期(例如用于计算),最简单和可读的方法是创建一个javascript函数,将所述日期转换为您想要的漂亮打印字符串(I不知道这样的功能是否已经存在。虽然创建起来并不难:
function prettyDate(date) {
return date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear();
}
我建议将它作为一个字符串从你的代码后面传递,因为它更具可读性。但这只有在你不需要使用日期时才有效。