控制器返回不正确的日期时间格式

时间:2014-03-07 15:00:03

标签: asp.net-mvc c#-4.0 datetime grid telerik

在我的控制器中使用Telerik DataSourceRequest时,任何具有DateTime数据类型的属性都将作为

返回
{"Data":[{"EffectiveStart":"\/Date(1393660800000)\/"}

而不是MM/dd/yy

我的模型上的属性是:

    [DataType(DataType.DateTime)]
    public DateTime EffectiveStart;

我还在我的文件中包含了Telerik的js文化参考,并发起了kendo.culture()没有运气。我错过了什么?

这里要求的是控制器:

    public ActionResult Grid_Read([DataSourceRequest]DataSourceRequest request, int id)
    {
        try
        {
            using (var db = new MyEntities())
            {

                var query = from refA in db.Entity
                            join refB in db.Entity on refA.ID equals refB.ID
                            where refA.ID == id
                            select new ResultList
                            {
                                ResultId = refA.PayeeId,
                                EffectiveStart = refA.EffectiveStart,
                            };

                List<ResultList> myvar = query.ToList();

                DataSourceResult result = myvar.ToDataSourceResult(request);

                return Json(result);
            }

        }
        catch (Exception ex)
        {
            return Json(null);
        }
    }

2 个答案:

答案 0 :(得分:2)

你可以做的一件事是替换

return Json(result);

通过

return Content(JsonConvert.SerializeObject(result));

顺便说一句,你需要使用Newtonoft.Json来使用JsonConvert。

答案 1 :(得分:1)

感谢所有回复。对此的解决方案是包括一些客户端JavaScript,它在运行时格式化字段:

function toDate(value)
    var dateRegExp = /^\/Date\((.*?)\)\/$/;
    var date = dateRegExp.exec(value);
    return new Date(parseInt(date[1]));
}

然后将一个添加到Telerik Grid列:

.ClientTemplate("#= kendo.toString( toDate(DateCreated), \"MM/dd/yyyy\" ) #")