我有一个带有日期的knockout视图模型。Viewmodel包含一个CustomerOrder,其中包含多个bookingrow (orderRows)。每个视图模型都有日期。为了提高可读性,我删除了很多数据:
function ViewModel(data) {
var self = this;
self.CustomerOrder = ko.observable(data.CustomerOrder);
self.AllTreatments = data.AllTreatments;
self.AllTreatmentGroups = data.AllTreatmentGroups;
self.AllTreatmentRooms = data.AllTreatmentRooms;
...
self.Save {
var dataToSave = ko.toJSON({ CustomerOrder: self.CustomerOrder });
AjaxSaveCustomerOrder(dataToSave);
}
}
var CustomerOrder = function (data) {
var self = this;
....
self.CustomerOrderDate = ko.observable(data.CustomerOrderDate);
self.Bookings = ko.observableArray($.map(data.Bookings, function(item) {
return new Booking(item);
}) || []);
};
当我查看帖子时,日期被发送为JSon日期,如下所示:
CustomerOrderDate":"/日期(1361981980121)/
它不是作为日期解析到我的视图模型,它是一个DateTime。
您应该手动解析date值并创建date对象。
self.CustomOrderDate = ko.observable(new Date(+data.CustomerOrderDate.replace(//Date((d+))//, '$1')));
谢谢Paul给我指出了正确的方向。
我现在使用Newton JSON序列化到KO视图模型,如下所示:
var viewModel = ko.mapping.fromJS(@(Html.Raw(JsonConvert.SerializeObject(Model, new IsoDateTimeConverter()))));
那么传递回服务器的日期是ISO和"Microsoft日期"。似乎KO处理两种格式,只是传递它得到的。
这篇文章也给出了一些更多的信息:处理日期与Asp。. Net MVC和KnockoutJS