.NET Core MVC复杂对象无法传递到控制器问题修复
修复复杂对象模型绑定问题的步骤
1. 对齐前端数据命名格式
前端封装的数据结构必须严格匹配后端实体类的嵌套属性路径,示例如下:
const employeeData = { Position: 1, Salary: 8000, Biodata: { Fullname: "张三", Gender: 1, Email: "zhangsan@example.com" }, EmergencyContactPerson: { Fullname: "李四", Connection: 2, NumberPhone: "13800138000" } };
2. 修正AJAX请求配置
必须指定正确的内容类型,并将数据序列化为JSON字符串:
$.ajax({ url: "/Home/Create", type: "POST", contentType: "application/json; charset=utf-8", data: JSON.stringify(employeeData), success: function(response) { console.log("提交成功"); }, error: function(xhr) { console.error("提交失败", xhr); } });
3. 配置控制器方法参数
在控制器的Create方法参数上添加[FromBody]特性,告知框架从请求体读取JSON数据:
[HttpPost] public IActionResult Create([FromBody] Employee employee) { if (ModelState.IsValid) { // 业务处理逻辑 return Ok(); } return BadRequest(ModelState); }
4. 排查绑定错误(可选)
若绑定仍失败,可通过模型状态获取具体错误信息:
if (!ModelState.IsValid) { var errors = ModelState.Values.SelectMany(v => v.Errors.Select(e => e.ErrorMessage)); return BadRequest(new { Message = "数据绑定失败", Errors = errors }); }
内容的提问来源于stack exchange,提问作者Andi
相关产品推荐
相关产品推荐

