Kendo Grid不显示JSON日期

时间:2014-10-14 18:05:34

标签: asp.net-mvc json kendo-grid

我正在使用一个Kendo Grid,它使用MVC Helpers构建,以显示一些远程JSON数据。

除日期列外,一切正常。

这是我的设置。

查看:

@(Html.Kendo().Grid<TrainingDTO>().Name("grid_training")
        .Columns(c => {
            c.Bound(a => a.Id).Width(50);
            c.Bound(a => a.Start).ClientTemplate("#= (Start == null) ? ' ' : kendo.toString(Start, 'dd-MM-yyyy') #");
            c.Bound(a => a.End).Format("{0:dd/MM/yyyy HH:mm:ss}");
            c.Bound(a => a.Description);
        })
        .Pageable()
        .Scrollable().DataSource(ds => ds.Ajax().PageSize(5).Model(m => m.Id(p => p.Id)).Read(R => R.Action("GridData", "Home", new { providerId = Model.Id }).Type(HttpVerbs.Post)))
                                    )

控制器:

        [HttpPost]
        public JsonResult GridData([DataSourceRequest]DataSourceRequest request) {


                var data = new Service().LoadSomeData().ToDataSourceResult(request, A => new {
                    Id = A.Id,
                    Start = A.Start,
                    End = A.End,
                    Description = A.Description
                });

                return Json(data, JsonRequestBehavior.AllowGet);
        }

返回(在json中)

{
  "Data": [
    {
      "Id": 1,
      "Start": "\/Date(1412031600000)\/",
      "End": "\/Date(1415318400000)\/",
      "Description": "test teste test"
    }
  ],
  "Total": 1,
  "AggregateResults": null,
  "Errors": null
}

“开始”和“结束”列显示为空。 TrainingDTO POCO上的这些属性是DateTime Nullables(即DateTime?)

我已经尝试了很多选项来格式化数据,但无济于事。

有没有办法在网格上打印这些JSON日期(不需要将它们格式化为控制器上的字符串)?

1 个答案:

答案 0 :(得分:0)

我以前遇到过这个问题。

我假设您希望使用英国日期格式而不是默认的美国格式。 如果你取消格式我希望你会看到格式正确的日期。

由于您似乎使用的是扁平模型(日期并未在复杂的视图模型中正常工作),因此最简单的方法是将文化文件添加到项目中,然后将其设置为英国一切都正确。

所以在你的布局页面中把它放在kendo脚本之后:

 <script src="/Scripts/kendo/{you version here}/cultures/kendo.culture.en-GB.min.js"></script>


    <script type="text/javascript">

        kendo.culture("en-GB");

    </script>

如果文化文件不是项目的一部分,只需通过telerik升级并包含它们或只是将它们复制到项目中。