我有一个使用KnockoutJS和jQuery的ASP.NET MVC应用程序。
我的KnockoutJS模型如下所示:
var jsonPass = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model.ExitPass, Newtonsoft.Json.Formatting.Indented, jsonSettings));
var ExitPass = function(exitPass) {
var self = this;
self.incidentId = ko.observable(exitPass.IncidentId || 0);
self.employeeId = ko.observable(exitPass.EmployeeId || 0);
self.employerId = ko.observable(exitPass.EmployerId || 0);
self.employerDesc = ko.observable(exitPass.EmployerDesc);
self.employeeNumber = ko.observable(exitPass.EmployeeNumber);
self.employeeName = ko.observable(exitPass.EmployeeName);
self.createdByName = ko.observable(exitPass.CreatedByName);
self.incidentDate = ko.observable(exitPass.IncidentDate);
self.incidentCode = ko.observable(exitPass.IncidentCode);
self.incidentCodeDesc = ko.observable(exitPass.IncidentCodeDesc);
self.incidentTypeId = ko.observable(exitPass.IncidentTypeId || 0);
self.incidentType = ko.observable(exitPass.IncidentType);
self.permitType = ko.observable(exitPass.PermitType);
self.outHour = ko.observable(exitPass.OutHour);
self.inHour = ko.observable(exitPass.InHour);
self.place = ko.observable(exitPass.Place);
self.subject = ko.observable(exitPass.Subject);
self.securityStaffId = ko.observable(exitPass.SecurityStaffId || 0);
self.authorizer = ko.observable(exitPass.Authorizer || 0);
self.notes = ko.observable(exitPass.Notes);
};
var App = function (exitPassData) {
var self = this;
self.exitPass = new ExitPass(exitPassData);
};
var appViewModel = new App(jsonPass);
ko.applyBindings(appViewModel);
当我使用像这样的ajax保存到服务器时:
// save method
$.ajax({
url: '@Url.Content("~/Incident/UpdateExitPass")/',
type: 'POST',
contentType: 'application/json',
dataType: 'json',
data: ko.toJSON(appViewModel.exitPass),
success: function(response) {
},
error: function(xhr, ajaxOptions, thrownError) {
}
});
我遇到的问题是某些属性未发送到服务器,例如“authorizer
”未发送到服务器。我已经检查过使用开发人员工具(Chrome)和请求有效负载是:
“授权人”是保留字吗?任何线索?
我认为我发现了这个问题,并且与HTML绑定元素有关:
<div class="form-group">
<label>Authorizer</label>
<select id="cboAuthorizer" class="form-control" data-bind="value: exitPass.authorizer">
</select>
</div>
我喜欢这个,如果我删除data-bind
元素,那么我可以在Payload中看到该属性。
有任何线索吗?