添加到序列化数组中的复杂对象在服务器端始终为 null
Complex object added into serialized Array always null on server side
我正在序列化表单数据并向其中添加额外的用户对象。
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 发送,但这也没有帮助。我在服务器端使用 MVC 5 ASP.NET。
我做错了什么?
编辑我遇到的问题是尝试将对象列表推送到 formData(在本例中为用户)。如果我推送一个布尔值,它会在服务器端很好地反序列化。
将
代码包装为$(document).ready(function(){ // code here });
,如下所示,它将确保包装的 JavaScript 将在 DOM 加载并处于就绪状态后执行。了解更多信息。
这是小提琴
$(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)
相关文章:
- 如何使用skip参数使用angular ui引导进行服务器端分页
- Webpack开发服务器和React服务器端渲染
- 提示使用服务器端事件处理程序激活JavaScript
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 将表单数据提交到服务器端
- 使用ajax的服务器端分页&jQuery
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 使用FormData上传AJAX图像;t在服务器端显示图像
- React路由器服务器端渲染和ajax获取数据
- renderReact/Rect Router+Node/Express.js的服务器端/同构渲染中未定义renderP
- Meteor如何运行服务器端python脚本
- CORS-服务器端cookie没有保存在chrome浏览器上
- 加载服务器端渲染的React组件后执行脚本
- 在Javascript中复制C#服务器端验证
- 在服务器端脚本执行后关闭选项卡
- 添加到序列化数组中的复杂对象在服务器端始终为 null
- 将剑道网格与服务器端筛选器和服务器端排序结合使用,字段 = NULL
- 添加“;b服务器端":数据表中的true给出错误TypeError:g为null