Im sử dụng loại trực tiếp với MVC. Im cố gắng để vượt qua một mảng quan sát của các đối tượng từ knockout trở lại hành động điều khiển MVC của tôi để tiết kiệm cho cơ sở dữ liệu. Nếu tôi vượt qua Array từ knockout trên để hành động điều khiển của tôi thông qua ko.toJSON (viewModel.ArrayName) nó trở lại như null trong tham số điều khiển của tôi. Nếu tôi cố gắng chuyển nó cho MVC qua ko.toJS (viewModel.ArrayName), nó có số lượng đúng các mục nhưng dữ liệu là null vì một lý do nào đó. Bất kỳ sự giúp đỡ nào về cách thực hiện điều này sẽ được đánh giá cao greeatly. Cảm ơn!Truyền đối tượng knockout.js observablearray tới MVC Controller Action?
My JQuery liệu Retrieval Phương pháp:
var dataService = {};
var viewModel;
$(document).ready(function() {
dataService.getAccessLevelList();
})
dataService.getAccessLevelList = function() {
$.post('/DataService/GetAccessLevelList', null, function (data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
});
}
Đây là phương pháp vấn đề:
updateAccessLevels = function() {
$.post('/DataService/UpdateAccessLevels', { accessLevels: ko.toJSON(viewModel.AccessLevels) }, function (status) {
alert(status);
});
}
My MVC điều khiển dữ liệu Retrieval hành động:
[HttpPost]
public ActionResult GetAccessLevelList()
{
FacilityAccessViewModel viewModel = new FacilityAccessViewModel();
viewModel.AccessLevels = unitOfWork.AccessLevelRepository.Get().ToList();
return Json(viewModel);
}
Tham số đang trở lại NULL hoặc với dữ liệu NULL khi cố chuyển nó từ Knockout trên phương thức bộ điều khiển này.
[HttpPost]
public ActionResult UpdateAccessLevels(List<AccessLevel> accessLevels)
{
try
{
foreach (AccessLevel record in accessLevels)
{
unitOfWork.AccessLevelRepository.Update(record);
}
unitOfWork.Save();
return Json("SUCCESS");
}
catch (Exception ex)
{
return Json(ex.ToString());
}
}
Dưới đây là các dữ liệu JSON hiển thị qua thats cáy được đưa lên controller action MVC của tôi khi tôi vượt qua trong {accessLevels: ko.toJSON (viewModel.AccessLevels)} tham số điều khiển được sắp tới trong rỗng sử dụng này
[{"Access":[],"Id":1,"AccessLevelDesc":"TEST222"},{"Access":[],"Id":2,"AccessLevelDesc":"TEST222"}]
Dưới đây là dữ liệu JS hiển thị qua cáy thats được đưa lên controller action MVC của tôi khi tôi vượt qua trong {accessLevels: ko.toJS (viewModel.AccessLevels)}, trong trường hợp này danh sách có hai thành viên như mong đợi, nhưng dữ liệu là tất cả null trong pro perties
accessLevels[0][Id] 1
accessLevels[0][AccessLevelDesc] TEST222
accessLevels[1][Id] 2
accessLevels[1][AccessLevelDesc] TEST222
Nếu tôi vượt qua trong một đối tượng duy nhất để điều khiển của tôi nó làm việc tốt, nhưng tôi không thể dường như tìm ra cách thích hợp để gửi một mảng của các đối tượng để điều khiển của tôi từ một obervablearray trở lại một POCO thực thể.
gì được hình dạng của JSON đang được đăng tải? Sử dụng trình gỡ lỗi để nhận được thông tin này hoặc sử dụng [Fiddler] (http://www.fiddler2.com/fiddler2/version.asp) để nắm bắt nó, sau đó cập nhật bài đăng của bạn với thông tin này. Cảm ơn! –
Đã chỉnh sửa câu hỏi của tôi ở trên với thông tin được yêu cầu. – ccorrin
Tôi không biết làm thế nào ASP.net xử lý ánh xạ nhưng bạn đang đi qua trong một chuỗi để bài viết của bạn ('ko.toJSON()' trả về một chuỗi). Đó không phải là một mảng sao? Bạn không nên sử dụng 'ko.toJS()'? –