Javascript 为什么我的mvc控制器没有在post上从淘汰客户端获取我的所有值
我正在使用knockout,我在post方法上设置了一个断点,它正确地捕获了我的所有观察值,但是当数据传递到控制器时 服务器端(单击保存按钮后)只有两个my值从服务器端传入。因此,我在控制器上设置了一个断点,它似乎提取了驱动程序名称和维护周期,其余的值都是零 保养周期是指汽车应在30天、60天、90天等时间内进行保养。。。。。。这就是我从knockout NB发布到控制器的方式注意,我的masterViewModel是我的index.js,我没有尝试发布make和模型,只是我只需要saveInfo方法中的值Javascript 为什么我的mvc控制器没有在post上从淘汰客户端获取我的所有值,javascript,asp.net-mvc,knockout.js,repository-pattern,single-page-application,Javascript,Asp.net Mvc,Knockout.js,Repository Pattern,Single Page Application,我正在使用knockout,我在post方法上设置了一个断点,它正确地捕获了我的所有观察值,但是当数据传递到控制器时 服务器端(单击保存按钮后)只有两个my值从服务器端传入。因此,我在控制器上设置了一个断点,它似乎提取了驱动程序名称和维护周期,其余的值都是零 保养周期是指汽车应在30天、60天、90天等时间内进行保养。。。。。。这就是我从knockout NB发布到控制器的方式注意,我的masterViewModel是我的index.js,我没有尝试发布make和模型,只是我只需要saveInf
function driverVM() {
var drv = this;
drv.driverId = ko.observable(0);
drv.driverName = ko.observable("");
drv.currentServicePeriods= ko.observable([]);
drv.pastServicePeriods =ko.observable([]);
}
function vehicleVM{
vvm.regNumber = ko.observable(0);
vvm.make = ko.observable("");
vvm.model = ko.observable("");
vvm.DriverDetail = new DriverVM();
vvm.saveVehiclDriverInformation = function () {
if (!masterViewModel.isAuthenticated()) return;
vvm.DriverDetail;
vvm.SaveInfo = $.map(masterViewModel.vehicleVM.driverVM., function (item) {
return masterViewModel.vehicleVM.driverVM.driverID, masterViewModel.vehicleVM.driverVM.driverName, $("#vehicleID").val(), $("#modelType").val(), masterViewModel.vehicleVM.driverVM.currentServicePeriods, masterViewModel.vehicleVM.driverVM.pastServicePeriods
});
$.when(postSecureData("/api/vehicleInfo/", ko.toJSON(vehicleVM.driverVM.SaveInfo)))
.done(function () {
document.getElementById("save-vehicleINfo-btn").innerHTML = "Saving...";
setTimeout(function () { document.getElementById("save-vehicleInfo-btn").innerHTML = "Save" }, 2500);
$.msgGrowl({
type: 'info',
title: 'vehicle information',
text: 'vehicle details succesfully saved',
position: 'bottom-right',
lifetime: 3000
});
})
};
这里发生的事情很少。
在我看来,ko.toJSON(vehicleVM.driverVM.SaveInfo)
和SaveInfo
不需要定义。SaveInfo更适合作为普通包装函数来生成对象,如下所示:
vvm.saveVehiclDriverInformation = function () {
if (!masterViewModel.isAuthenticated()) return;
function prepareInfo(){
return {
driverID: masterViewModel.vehicleVM.driverVM.driverID(),
driverName: masterViewModel.vehicleVM.driverVM.driverName(),
vehicleID: $("#vehicleID").val(),
modelType: $("#modelType").val(),
currentServicePeriods: masterViewModel.vehicleVM.driverVM.currentServicePeriods(),
pastServicePeriods: masterViewModel.vehicleVM.driverVM.pastServicePeriods()
}
};
$.when(postSecureData("/api/vehicleInfo/", prepareInfo()))
.done(function () {
document.getElementById("save-vehicleINfo-btn").innerHTML = "Saving...";
setTimeout(function () { document.getElementById("save-vehicleInfo-btn").innerHTML = "Save" }, 2500);
$.msgGrowl({
type: 'info',
title: 'vehicle information',
text: 'vehicle details succesfully saved',
position: 'bottom-right',
lifetime: 3000
});
})
};
在整个代码中,生成前导句点和尾随句点时会出现很多错误。您是否有一个精简的小提琴再现了这个问题?@dperry目前没有小提琴,但如果您能指出生成前导和尾随句点的错误,我需要调整,这将是非常好的“始终”可能有点夸张,但有两个:SaveInfo映射调用,$。当行,我以为还有一个,但似乎找不到it@dperry$。如果工作正常,可能是您所说的saveInfo应该替换为另一种类型的调用,但不确定是哪种类型。但是,此
ko.toJSON(.vehicleVM.driverVM.saveInfo)
不应该工作,vehicleVM前面的引导周期将中断Thuff@dperry在尝试了你的方法之后,我得到了[object object],[object object object],[object object object],[object object],[object object object],[object object object],[object object object],抱歉,它们需要评估,一分钟哦,有一些看似不必要的事情正在进行,您的方法似乎接近正确,因为它指示对象的匹配数量,但它们似乎是空的,不知何故“对象对象”???我忘了再评估一次,一秒钟