在AJAX调用中将KnockoutJS可观察数组转换为常规数组或JSON对象,并在控制器方法中接受常规数组或JSON对象作为参数。
例如,如果我们有这样的KnockoutJS ViewModel:
function MyViewModel() {
var self = this;
self.myItems = ko.observableArray([]);
self.addItem = function() {
self.myItems.push({ name: "New Item" });
}
}
ko.applyBindings(new MyViewModel());
我们想要保存myItems数组,我们可以使用以下AJAX调用:
$.ajax({
url: "/myController/myAction",
type: "POST",
data: ko.toJSON({ items: myViewModel.myItems() }),
contentType: "application/json",
success: function(result) {
// TODO: Handle success
},
error: function(error) {
// TODO: Handle error
}
});
在我们的控制器方法中,我们可以接受一个包含items属性的JSON对象,并将其转换为C# List或数组:
[HttpPost]
public ActionResult MyAction(MyViewModelJson model) {
List items = model.items;
// TODO: Save items to database or perform other actions
return Json(new { success = true });
}
public class MyViewModelJson {
public List items { get; set; }
}
public class MyItem {
public string name { get; set; }
}