下面是我用来创建JSON对象的javascript代码,用于将值返回给控制器。 vm引用由数字填充的其他地方的数组。我创建了一个数字数组的对象。
$("#saveUser").live("click", function() {
var username = $("#UserName").val();
var email = $("#Email").val();
var phoneNumber = $("#PhoneNumber").val();
var personCode = $("#PersonCode").val();
var managerId = $("#ManagerId").val();
var officeId = $("#OfficeId").val();
var address = $("#Address").val();
var activeInd = $("#ActiveInd").val();
var roles = [];
for(i=0;i<vm.RoleDdList().length ;i++) {
roles.push(vm.RoleDdList()[i].role());
}
var jsonObj =
{
username:username,
email:email,
phoneNumber:phoneNumber,
personCode:personCode,
managerId:managerId,
officeId:officeId,
address:address,
activeInd:activeInd,
roles:roles
};
$.ajax({
type:"POST",
async:true,
url:"Users/Save",
data:jsonObj,
dataType: "json",
success:function (data) {
dlg.dialog("close");
},
error:function (data)
{
alert("An error occurred when saving the contact.");
}
});
});
控制器方法:
[HttpPost]
public void Save(UsersModel model)
{
//code
}
我可以看到使用调试器没有将角色字段传递给控制器。它在客户端生成并填充。该模型需要该特定字段的字符串列表。所有其他对象都通过并匹配。
我已经更改了代码,将vm数组中的数字转换为字符串,但我仍然没有通过任何内容。 (模型中的List为null)。
任何人都知道我做错了什么?
答案 0 :(得分:5)
试试这个:
$.ajax({
type: 'POST',
dataType: 'json',
url: '/Users/Save',
data: JSON.stringify(jsonObj),
contentType: 'application/json; charset=utf-8',
success: function (data) {
console.debug(data);
},
error: function (data) {
console.debug(data);
}
});