我正在序列化表单数据并在其中添加额外的用户对象。
Jquery代码:
....
var users= getUsers();
var formData = $("#form").serializeArray();
formData.push({ name: 'Users', value: users});
$.ajax({
url: "/ControllerName/ViewName",
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
data: formData
});
....
function getUsers() {
var users= [];
users.push( new Object({
Name: "User 1",
}));
return users;
}
C#Model
public class File
{
public string Name { get; set; }
public int Id { get; set; }
public List<Users> Users { get; set; }
}
public class Users
{
public string Name { get; set; }
}
当呼叫到达服务器端控制器操作时,“用户”列表始终为空(Count of 0)。我已经尝试过stringify并发送为Json,但这也没有帮助。我在服务器端使用ASP.NET MVC 5.
我做错了什么?
修改 我遇到的问题是尝试将对象列表推送到formData(在这种情况下是用户)。如果我按下一个布尔值,它会在服务器端反序列化。
答案 0 :(得分:0)
将您的代码包含在$(document).ready(function(){ // code here });
中,如下所示
,它将确保包装的javascript将在DOM加载并处于就绪状态时执行。 for more info。
这是fiddle
$(document).ready(function(){
var users= getUsers();
var formData = $("#form").serializeArray();
formData.push({ name: 'Users', value: users});
alert(JSON.stringify(formData));
$.ajax({
url: "/ControllerName/ViewName",
type: "POST",
data: JSON.stringify(formData)
});
});
function getUsers() {
var users= [];
users.push({Name: "User 1"});
return users;
}
修改强>
将data: formData
更改为data: JSON.stringify(formData)