0

我正在使用 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

如何格式化 Microsoft JSON 日期?

4

1 回答 1

1

"\/Date(1345108269310)\/"是将日期传递给 javascript 的正确方法。在我看来,你有两个选择:

如果您不明确需要将该值作为日期,则可以将一个字符串传递给 JSON 变量,其中包含打印精美的日期。类似于以下内容:

DateTimeStart: String.Format("{0: dd-MM-yyyy}", myDate)

如果您仍然需要在 javascript 中使用变量 aa 日期(例如用于计算),最简洁和易读的方法是创建一个 javascript 函数,将所述日期转换为您想要的漂亮打印字符串(我不知道这样的功能是否已经存在。虽然创建起来并不难:

function prettyDate(date) {

    return date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear();

}

我建议将它作为字符串从您的代码中传递出去,因为它更具可读性。但这仅在您不需要使用除显示之外的日期时才有效。

于 2012-08-16T10:56:46.470 回答