挖空视图模型日期 -> MVC 4 视图模型未在发布时转换



我有一个带有日期的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

最新更新