小编Bil*_*son的帖子

JSON日期序列化和时区

我在使用JSON序列化对象在客户端浏览器上显示正确日期时遇到问题.用户可以定义他们想要查看数据的时区.鉴于此,我将UTC日期转换为服务器上用户的时区.然后我想通过JSON将日期/时间(已经转换为定义的时区)序列化到浏览器.

看起来很简单,但是我一直在使用的JSON序列化程序已经严重破坏了我的日期.服务器为UTC,客户端位于Central(-6).即使我将DateTime.Kind指定为Unspecified,也会调整日期(-12小时).

不知何故,.NET知道客户端的浏览器在哪个时区以及服务器处于什么时区,即使我已根据用户的全局设置调整了时间并设置了日期,它也取消了我的日期/时间-6.有点不明确.如何才能让JSON序列化程序不尝试调整日期?

List<ErrorGridModel> models = Mapper.Map<ErrorCollection, List<ErrorGridModel>>(errors);
foreach (ErrorGridModel m in models)
{
    //convert UTC dates to user local dateTime - split out date vs. time for grouping & splitting columns
    DateTime dtLocal = TimeZoneInfo.ConvertTimeFromUtc(m.ErrorDate, this.AppContext.User.TimeZoneInfo);
    m.ErrorDate = new DateTime(dtLocal.Year, dtLocal.Month, dtLocal.Day, 0, 0, 0, DateTimeKind.Unspecified);
    m.ErrorTime = new DateTime(1900, 1, 1, dtLocal.Hour, dtLocal.Minute, dtLocal.Second, DateTimeKind.Unspecified);
}
IQueryable<ErrorGridModel> dataSource = models.AsQueryable();
return new ContentResult() { Content = JsonConvert.SerializeObject(dataSource.ToDataSourceResult(request), new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }), ContentType = "application/json" }; …
Run Code Online (Sandbox Code Playgroud)

.net timezone datetime json json.net

11
推荐指数
1
解决办法
2万
查看次数

更新后,KendoUI网格以编辑模式保留

我正在使用ASP.NET MVC Server Wrappers为KendoUI Grid使用AJAX进行绑定(v2013.1.319)并使用内联编辑.当我编辑记录并单击更新时,帖子发生在服务器上并且记录成功保存.我按文档建议返回JSON响应,但KendoUI Grid保持编辑模式.如果单击"取消",则基础本地数据不会反映更改.如果我刷新,则会正确显示更改.我需要一些帮助来找出更新无效的原因.创建和删除功能工作正常.

<div style="width: 800px">
@(Html.Kendo().Grid<RoleGridModel>()
    .Name("grdRoles")
    .Columns(columns =>
    {
        columns.Bound(r => r.Name).Width(200);
        columns.Bound(r => r.Description).Width(300);
        columns.Command(command => { 
            if (security.CanAdd || security.CanUpdate) command.Edit(); 
            if (security.CanDelete) command.Destroy();
            command.Custom("Manage Access").Click("manageAccess");
        })
        .Width(300);
    })
    .Groupable(grouping => grouping
        .Enabled(false))
    .Events(events => { if (security.CanAdd && !security.CanUpdate) events.DataBound("function() { this.table.find('.k-grid-edit').hide(); }"); })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model => model.Id(r => r.RoleId))
        .Events(events => events.Error("error_handler"))
        .Read(read => read.Action("Index", "Roles", new { area = "Setup" }))
        .Create(create => create.Action("Create", "Roles", new { …
Run Code Online (Sandbox Code Playgroud)

kendo-ui kendo-grid kendo-asp.net-mvc

1
推荐指数
1
解决办法
3944
查看次数