0
这是mvc EF和淘汰赛中的车队管理应用程序,其中有车辆,驾驶员和司机旅行的特定路线。将嵌套式挖空视图模型传递给控制器
我有一种情况,我想从我的视图模型中嵌套的三个模型中收集字段值到单个对象中,并通过ajax将其发布到我的后端。我希望通过点击一个按钮来触发它。
有一个问题是我的populateFleetInformation
函数。当我从各种模型中收集字段值时,一些可观察值正在丢失其值并显示为空。
试图使AJAX调用
function FleetViewModel() {
var vvm = this;
vvm.regNumber = ko.observable(0);
vvm.make = ko.observable("");
vvm.model = ko.observable("");
vvm.RouteDetail = new RouteViewModel();
vvm.SaveFleetInfo = function(item){
if (!pageViewModel.isAuthenticated()) return;
populateFleetInformation(item);
$.when(postSecureData("/api/Fleet/", ko.toJSON(pageViewModel.FleetViewModel.RouteViewModel.RouteDriverViewModel)))
.done(function() {
document.getElementById("save-Fleet-btn").innerHTML = "Saving...";
setTimeout(function() { document.getElementById("save-fleet-btn").innerHTML = "Save" }, 2500);
$.msgGrowl({
type: 'info',
title: 'Fleet Information',
text: 'fleet information succesfully saved',
position: 'bottom-right',
lifetime: 3000
});
})
}
}
函数收集数据
function PopulateFleetInformation(item)
{
pageViewModel.fleetVM.regNumber(item.regNumber);
pageViewModel.fleetVM.make(item.make);
pageViewModel.fleetVM.model.(item.model);
pageViewModel.fleetVM.routeDetail.routeID(item.routeId);
pageViewModel.fleetVM.routeDetail.routeName(item.routeName);
pageViewModel.fleetVM.routeDriver.nationalId(item.nationalId);
pageViewModel.fleetVM.individualMsisdn.licenseId(item.licenseId);
pageViewModel.fleetVM.individualMsisdn.driverName(item.driverName);
}
触发按钮视图模型
<button type="submit" id="save-fleet-btn" class="btn"data-bind="click: $root.fleetVM.sensorDetail.SaveFleetInfo"></button>
在哪里你期待'PopulateFleetInformation'中的'item'来自UI,还是来自Ajax调用的结果? –
@Anish Patel从用户界面,然后我想将这些值(项目)传递给控制器,这就是为什么填充方法在post方法之前 – anchor
ajax调用在哪里,它是'postSecureData'? ajax调用返回什么? –