我有一个带日期的淘汰视图模型。 Viewmodel包含一个包含多个BookingRows(orderRows)的CustomerOrder。这些视图模型中的每一个都有日期。为了便于阅读,我删除了大量数据:
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)/
它不会被解析为我的viewmodel的日期,它是一个DateTime。
任何sugestions如何做到这一点表示赞赏。
答案 0 :(得分:0)
您应该解析日期值并手动创建Date对象。
self.CustomOrderDate = ko.observable(new Date(+data.CustomerOrderDate.replace(/\/Date\((\d+)\)\//, '$1')));
答案 1 :(得分:0)
感谢Paul指出我正确的方向。
我现在使用Newton JSON序列化到KO视图模型,如下所示:
var viewModel = ko.mapping.fromJS(@(Html.Raw(JsonConvert.SerializeObject(Model, new IsoDateTimeConverter()))));
然后传回服务器的日期是ISO和“Microsoft日期”。似乎KO处理这两种格式并且只是传回它所获得的内容。
这篇文章还提供了更多信息:Handling dates with Asp.Net MVC and KnockoutJS