我使用 MVC 淘汰赛。我试图将一个可观察的对象数组从淘汰赛传递回我的 MVC 控制器操作以保存到数据库。如果我通过 ko.toJSON(viewModel.ArrayName) 将 Array 从淘汰赛传递给我的控制器操作,它在我的控制器参数中返回为 null。如果我尝试通过 ko.toJS(viewModel.ArrayName) 将它传递给 MVC,它具有正确的项目数,但由于某种原因数据为空。任何有关如何做到这一点的帮助将不胜感激。谢谢!
我的 JQuery 数据检索方法:
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);
});
}
这是问题方法:
updateAccessLevels = function () {
$.post('/DataService/UpdateAccessLevels', { accessLevels: ko.toJSON(viewModel.AccessLevels) }, function (status) {
alert(status);
});
}
我的 MVC 控制器数据检索操作:
[HttpPost]
public ActionResult GetAccessLevelList()
{
FacilityAccessViewModel viewModel = new FacilityAccessViewModel();
viewModel.AccessLevels = unitOfWork.AccessLevelRepository.Get().ToList();
return Json(viewModel);
}
尝试在此控制器方法上从 Knockout 传递参数时,参数返回 NULL 或带有 NULL 数据。
[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());
}
}
下面是通过提琴手显示的 JSON 数据,当我传入 { accessLevels: ko.toJSON(viewModel.AccessLevels) } 时,控制器参数将使用此参数为 null
[{"Access":[],"Id":1,"AccessLevelDesc":"TEST222"},{"Access":[],"Id":2,"AccessLevelDesc":"TEST222"}]
下面是通过提琴手显示的 JS 数据,当我传入 { accessLevels: ko.toJS(viewModel.AccessLevels) } 时,这些数据被发布到我的 MVC 控制器操作中,在这种情况下,列表有两个预期的成员,但数据全部为空在属性中
accessLevels[0][Id] 1
accessLevels[0][AccessLevelDesc] TEST222
accessLevels[1][Id] 2
accessLevels[1][AccessLevelDesc] TEST222
如果我将单个对象传递给我的控制器,它工作得很好,但我似乎无法弄清楚将对象数组从 obervablearray 发布回 POCO 实体的正确方法。