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

ASP.NET Core 6 MVC中Ajax Form Post无法绑定到对象问题求助

问题:StudentDTO绑定为null,请求无法正确传递表单数据

项目中其他区域的类似代码运行正常,但当前接口的studentDTO对象始终为null。请求能到达控制器方法,但无法获取表单数据;移除[FromForm]会收到“415 Unsupported Media Type”响应。

控制器方法

[HttpPost("SaveStudent")]
public async Task<IActionResult> SaveStudent(
    [Bind(Prefix = "Student")][FromForm] StudentDTO studentDTO
)
{
     // 业务逻辑
}

实体类

public class StudentDTO 
{
    public Guid StudentID { get; set; }
    public Guid AccountID { get; set; }
    public int TuitionID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public decimal AnnualTuitionCost { get; set; }
    public int TuitionMonths { get; set; }
    public string StartDate { get; set; }
    public string EndDate { get; set; }
}

Ajax请求代码

var formData = $("#addEditStudentFrm").serialize();
console.log(formData);

$.ajax({
    url : '/api/blah/SaveStudent/',
    dataType: 'json',   
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 
    data: formData,
    type: 'POST',
    success: function (result) {
        // 成功逻辑
    },
    error: function (result) {
        // 错误逻辑
    }
});

请求详情

请求截图


排查与解决建议

  • 修正绑定前缀不匹配问题
    控制器中使用了[Bind(Prefix = "Student")],但从请求截图可见,所有表单字段都没有Student.前缀(比如直接是FirstName而非Student.FirstName)。两种解决方式:

    1. 移除控制器参数上的[Bind(Prefix = "Student")]属性;
    2. 修改HTML表单中所有input的name属性,添加Student.前缀,例如name="Student.FirstName"、name="Student.LastName"。
  • 校验表单字段与DTO属性的匹配性
    确保HTML表单中每个input的name属性与StudentDTO的属性名完全一致(大小写不敏感,但拼写必须正确),没有遗漏或错误。比如StudentID对应name="StudentID",AnnualTuitionCost对应name="AnnualTuitionCost"。

  • 确认表单序列化的完整性
    检查表单中的所有需要传递的字段是否都设置了name属性——serialize()只会序列化带有name属性的元素,没有name的字段不会被提交。

  • 验证DTO的构造函数与访问性
    确保StudentDTO是public访问级别,且存在默认无参构造函数(如果手动定义了带参构造函数,需要显式添加无参构造函数,否则模型绑定无法实例化对象)。

  • 保留[FromForm]属性
    移除[FromForm]出现415错误是因为请求是application/x-www-form-urlencoded格式,而默认模型绑定会尝试解析JSON格式的请求体,因此必须保留[FromForm]来指定从表单数据绑定。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:05:30