我正在序列化表单数据,并向其中添加了一个额外的用户对象。
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#模型
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; }
}
当呼叫触发服务器端控制器操作时,“用户”列表始终为空(计数为0)。我曾尝试将字符串化并以Json的身份发送,但这也没有帮助。我在服务器端使用ASP.NET MVC 5。
我究竟做错了什么?
编辑
我遇到的麻烦是尝试将对象列表推入formData(在这种情况下为用户)。如果我推一个布尔值,它将在服务器端反序列化正常。
最佳答案
将您的代码包装在$(document).ready(function(){ // code here });
中,如下所示
,这将确保在加载DOM并处于就绪状态后,将执行包装的JavaScript。 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)
关于javascript - 添加到序列化数组中的复杂对象在服务器端始终为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36891652/