You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC中如何通过FormData向控制器提交包含嵌套类的表单数据

问题原因

FormData的append()方法传入非基础类型(比如自定义对象)时,会自动调用对象的toString()方法转成[object Object]格式的字符串,ASP.NET 默认模型绑定器无法识别该格式,因此嵌套的UserAdres属性无法完成绑定,始终为null。

解决方法

按照ASP.NET 模型绑定的命名规则,嵌套类的属性需要用 「外层属性名.内层属性名」 的点语法格式作为键单独添加到FormData中,修改后的代码如下:

var formdata = new FormData();
formdata.append('ID', 1);
formdata.append('UserName', 'Emre');
formdata.append('Password', '112233');
// 单独添加嵌套类的每个属性,键名用点语法拼接
formdata.append('UserAdres.ID', 1);
formdata.append('UserAdres.Sehir', 'Istanbul');
formdata.append('UserAdres.Ilce', 'Kadikoy');
formdata.append('UserAdres.Mahalle', 'Kemal');
formdata.append('UserAdres.Sokak', 'Yok');

$.ajax({
   type: 'POST',
   url: '/Users/Kaydet',
   dataType: 'json',
   processData: false,
   contentType: false,
   data: formdata
}).done(function (Result) {
   // 后续业务逻辑
});

补充说明

如果存在多级嵌套的情况,按照同样的规则拼接键名即可,比如UserAdres.Coordinate.Lat、UserAdres.Coordinate.Lng这种格式,默认模型绑定器就能自动完成多层嵌套类的参数绑定。

内容的提问来源于stack exchange,提问作者Haydar Cabbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:24:05