gpt4 book ai didi

asp.net-mvc - knockout 日期在发布到 MVC Controller 时重置

转载 作者:行者123 更新时间:2023-12-02 20:09:14 26 4
gpt4 key购买 nike

我有一个knockout/mvc3应用程序。我正在将日期传递回 Controller 。

Controller

public ActionResult PackageUpdate(Package updatePackage){
\\do some stuff but dates are set to zero?
}

查看模型及保存方法

var Package = function (data) {
self = this;
self = ko.mapping.fromJS(data);
self.save = function(){
$.ajax({
url: '/MediaSchedule/PackageUpdate',
data:ko.toJSON({ updatePackage: self })
}).success(function (results) {
console.log(results);
}).error(function (er) {
console.error('Ah damn you broke it.')
console.log(er);
});
}
return self;
}

Json 被传递

{"updatePackage":{"Id":"82e3bc7e-27b8-49c2-b1fa-1ee2ebffbe66","Name":"28a38","SecondaryName":"è€å­æˆ‘è¦é’±","IsLocked":true},"DateCreated":"/Date(1357650000000+1100)/","DateStart":"/Date(1365080400000+1100)/","DateEnd":"/Date(1365516000000+1000)/"}

ID、名称和其他属性正在传入,但日期正在重置为 {1/1/0001 12:00:00 AM}。我的假设是因为它没有被反序列化,所以它设置了一个最短日期。问题:如何正确反序列化我的日期。

最佳答案

我认为问题在于你如何获取这些日期。您展示了一个使用 MS 日期格式的示例,例如 /Date(1357650000000+1100)/,该格式尚未标准化,并且正在慢慢被弃用,取而代之的是 ISO8601,它看起来像 2013-01-08T13 :00:00.000+11:00

事实上,当您 JSON.stringify 一个 javascript Date 对象时,它使用 ISO8601 格式。 ko.mapping.toJSON 也会发生这种情况。

这个问题有多种解决方案,包括客户端和服务器端。 This post详细描述了问题,并提供了一些可能对您有帮助的精彩答案。

恕我直言,最好的解决方案是让 MVC Controller 发出并使用 ISO8601,而不是旧的 Microsoft 日期格式。最简单的方法是使用 Json.Net library which now has ISO8601 as the default所以你甚至不需要定制它。在客户端,您可能还想查看 Moment.js - 这使得解析和格式化 ISO 日期变得容易。

关于asp.net-mvc - knockout 日期在发布到 MVC Controller 时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15778599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com