Tôi vừa mới bắt đầu sử dụng knockout và tôi đang gặp sự cố với tính năng SerialTime serialization và Deserialization sử dụng JavaScriptSerializer.Thời gian ràng buộc ràng buộc để loại bỏ chế độ xem với JavaScriptSerializer mặc định
Tôi đã cập nhật mô hình quà tặng trong Steves koListEditor ví dụ từ blog của mình để bao gồm một lĩnh vực DateTime Modified:
public class GiftModel
{
public string Title { get; set; }
public double Price { get; set; }
public DateTime Modified { get; set; }
}
Sau đó, tôi được cập nhật các index.aspx để bao gồm các lĩnh vực mới:
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<h1>Gift list editor</h1>
<p>You have asked for <span data-bind="text: gifts().length"> </span> gift(s)</p>
<form class="giftListEditor">
<table>
<tbody data-bind="template: { name: 'giftRowTemplate', foreach: gifts }"></tbody>
</table>
<button data-bind="click: addGift">Add Gift</button>
<button data-bind="enable: gifts().length > 0" type="submit">Submit</button>
</form>
<script type="text/html" id="giftRowTemplate">
<tr>
<td>Gift name: <input class="required" data-bind="value: Title, uniqueName: true"/></td>
<td>Price: \$ <input class="required number" data-bind="value: Price, uniqueName: true"/></td>
<td>Modified: <input class="required date" data-bind="value: Modified, uniqueName: true"/></td>
<td><a href="#" data-bind="click: function() { viewModel.removeGift($data) }">Delete</a></td>
</tr>
</script>
<script type="text/javascript">
var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
var viewModel = {
gifts : ko.observableArray(initialData),
addGift: function() {
this.gifts.push({ Title: "", Price: "", Modified:"" });
},
removeGift: function (gift) {
this.gifts.remove(gift);
},
save: function() {
ko.utils.postJson(location.href, { gifts: this.gifts });
}
};
ko.applyBindings(document.body, viewModel);
$("form").validate({ submitHandler: function() { viewModel.save() } });
</script> </asp:Content>
Tuy nhiên, khi JavaScriptSerializer nối tiếp Mô hình
var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
các Date Modified là sắp ra như thế này:
Ngoài ra khi sử dụng Anh Ngày Tức là 25/01/2011 các JavaScriptSerializer.Deserialize ném ngoại lệ sau đây:
25/01/2011 không phải là một giá trị hợp lệ cho DateTime.
Mặc dù tôi có 2 vấn đề ở đây câu hỏi chính là có ai đã sử dụng thành công knockout từ MVC 2 và nhận JavaScriptSerializer làm việc với DateTimes không? Tôi nhận ra tôi có thể viết JavaScriptSerializer của riêng tôi nhưng tôi đã hy vọng có được một giải pháp làm sẵn ngoài kia :)
Dưới đây là đoạn code cho các phiên bản cập nhật của koListEditor Steve Sanderson của:
Cảm ơn
Dave
Bất cứ ai nhìn vào ở trên .. bạn có thể sử dụng JSON.net để gửi ngày cho khách hàng theo định dạng bạn muốn bao giờ .. xem http://james.newtonking.com/archive/2009/02/20/good -date-times-with-json-net.aspx – CraftyFella