1

日付付きのノックアウトビューモデルがあります。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);
       }) || []);
}; 

投稿を見ると、日付は次のようにJSonDatesとして送信されます。

CustomerOrderDate ":" / Date(1361981980121)/

それがDateTimeである私のviewmodelへの日付として解析されません。

これを行う方法についての推測はありがたいです。

4

2 に答える 2

0

日付値を解析し、Dateオブジェクトを手動で作成する必要があります。

self.CustomOrderDate = ko.observable(new Date(+data.CustomerOrderDate.replace(/\/Date\((\d+)\)\//, '$1')));
于 2013-02-27T18:21:52.073 に答える
0

ポール、正しい方向に向けてくれてありがとう。

Newton JSON を使用して、次のように KO ビューモデルにシリアル化します。

 var viewModel = ko.mapping.fromJS(@(Html.Raw(JsonConvert.SerializeObject(Model, new IsoDateTimeConverter()))));    

次に、サーバーに返される日付は ISO と「Microsoft の日付」です。KO は両方の形式を処理し、取得したものを返すだけのようです。

この投稿では、いくつかの詳細情報も提供しています: Asp.Net MVC および KnockoutJS を使用した日付の処理

于 2013-02-28T09:10:53.743 に答える