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

ASP.NET MVC HttpPost接口接收自定义类参数全为默认值如何解决

参数绑定失败解决方案

1. 修正自定义模型成员为可读写属性

ASP.NET 默认模型绑定器仅支持绑定公共可读写属性,你定义的ClientParameters类所有成员均为公共字段,无法被识别赋值,修改类定义如下:

public class ClientParameters
{
    public int ClientID { get; set; }
    public int FamilyID { get; set; } 
    public bool IncludeFirstName { get; set; }
    public bool IncludeLastName { get; set; }
    public bool ExactDate { get; set; }
}

2. 显式指定参数绑定来源

当请求Content-Type为application/json时,需要在参数前添加[FromBody]特性,告知框架从请求体读取JSON内容反序列化:

[HttpPost]
public JsonResult GetClients([FromBody] ClientParameters param)

如果是ASP.NET MVC 5及更早版本,部分场景下无需加[FromBody]也可正常绑定,优先完成第一步修改后测试即可

3. 修正请求体格式

你测试用的请求体外层多包裹了一层双引号,会被识别为普通字符串而非JSON结构,正确的请求体应为原生JSON格式:

{"ClientID":5,"FamilyID":12,"IncludeFirstName":true,"IncludeLastName":true,"ExactDate":true}

客户端提交代码示例

直接传入JSON.stringify的返回值即可,不要额外嵌套包装:

$.ajax({
    url: '/你的控制器名称/GetClients',
    type: 'POST',
    data: JSON.stringify({
        ClientID: 5,
        FamilyID: 12,
        IncludeFirstName: true,
        IncludeLastName: true,
        ExactDate: true
    }),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (res) {
        // 处理返回结果
    }
});

完成以上修改后即可实现自定义类参数的正常绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:06:04