DateTime字段在Telerik';用于Asp.net MVC的网格

本文关键字:net Asp MVC 网格 用于 字段 Telerik DateTime | 更新日期: 2023-09-27 18:25:26

我正试图在Kendo网格列中显示一个DateTime,但没有显示任何内容,所有其他列都会正常显示。

型号如下:

public class LogViewModel
{
    public int Id { get; set; }
    public string LoginName { get; set; }
    public string Message { get; set; }
    public string Task { get; set; }
    public DateTime EntryDate { get; set; }
}

视图:

@(Html.Kendo().Grid<Models.LogViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(o => o.Task).Width("20%").Title(Resources.Task);
        columns.Bound(o => o.Message).Width("55%").Title(Resources.Message);
        columns.Bound(o => o.LoginName).Width("10%").Title(Resources.User);
        columns.Bound(o => o.EntryDate).Width("15%").Title(Resources.Date);
    })
    .Sortable()
    .Filterable()
    .Resizable(r => r.Columns(true))
    .Scrollable(scrollable => scrollable.Virtual(true))
    .HtmlAttributes(new { style = "height:430px;" })
    .ColumnMenu()
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(100)
        .Read(read => read.Action("GetLogData", "Log"))
    )
)

返回数据的控制器操作:

    public JsonResult GetLogData([DataSourceRequest] DataSourceRequest request)
    {
        var data = this.dbLogContext.Logs.AsQueryable();
        return Json(data.ToDataSourceResult(request, l => new LogViewModel
        {
            Id = l.Id,
            LogType = l.LogType,
            LoginName = l.LoginName,
            Message = l.DisplayableMessage,
            Task = l.DisplayableTask ?? l.Task,
            EntryDate= l.EntryDate
        }), JsonRequestBehavior.AllowGet);
    }

以下是操作返回的数据:

{"Data":[{"Id":1,"LogType":2,"LoginName":"Administrador","Message":"Erro ao criar campanha. Período de vendas inválido.","Task":"Criação de Campanha","EntryDate":"'/Date(1408367803637)'/","IsKey":false},{"Id":2,"LogType":4,"LoginName":"Operador RJ","Message":"Base de sorteio exportada com campanha em andamento","Task":"Exportação de Sorteio","EntryDate":"'/Date(1408367803637)'/","IsKey":false},{"Id":3,"LogType":6,"LoginName":"Operador PE","Message":"Um EC de nome '"Farmácia do Trabalhador'" foi criado.","Task":"Criação de EC","EntryDate":"'/Date(1408367803640)'/","IsKey":false},{"Id":4,"LogType":6,"LoginName":"Administrador","Message":"Contrato de captura de '"Cielo'" foi alterado.","Task":"Edição de Contrato","EntryDate":"'/Date(1408367803640)'/","IsKey":false},{"Id":5,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1409168290103)'/","IsKey":false},{"Id":6,"LogType":6,"LoginName":"admin","Message":"Pergunta secreta definida com sucesso.","Task":"ResetSecretQuestion","EntryDate":"'/Date(1409168302973)'/","IsKey":false},{"Id":7,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1409668083280)'/","IsKey":false},{"Id":8,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1410186476820)'/","IsKey":false},{"Id":9,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1410360292757)'/","IsKey":false},{"Id":10,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1410368834727)'/","IsKey":false},{"Id":11,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1410445689033)'/","IsKey":false},{"Id":12,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1410455135503)'/","IsKey":false},{"Id":13,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1410460921197)'/","IsKey":false},{"Id":14,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1410806956787)'/","IsKey":false},{"Id":15,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1411407682677)'/","IsKey":false},{"Id":16,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1411657058883)'/","IsKey":false},{"Id":17,"LogType":6,"LoginName":"","Message":"O usuário admin logou com sucesso.","Task":"Login","EntryDate":"'/Date(1412010615887)'/","IsKey":false}],"Total":17,"AggregateResults":null,"Errors":null}

您可以在上面看到,EntryDate字段对所有条目都有有效值,但如果我尝试为日期列使用ClientTemplate,它会显示属性为null:.columns.Bound(o => o.EntryDate).Width("15%").Title(Resources.Date).ClientTemplate("#= EntryDate #");

JSON日期是MS格式的,剑道网格应该能够解析,我已经尝试过用ISO/UTC日期格式和javascript日期格式格式化日期,但问题仍然存在

我使用的是Telerik的用户界面工具,用于Asp.NetMVC版本2014.2.903.545。

DateTime字段在Telerik';用于Asp.net MVC的网格

发现问题。js的parseDate覆盖了kendo自己的parseDate方法。

如果你有同样的问题,解决方案是在注册了剑道的文化javascript之后注册globalize.js。

你可以在这里找到更多关于这个问题的信息。