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

ASP.NET Core 7 Web API无法接收类对象参数问题求助

问题解决方法

你的问题根源在于UserSearchOptions类使用了字段(Fields)而非属性(Properties),ASP.NET Core的模型绑定系统和Swagger文档生成器默认只识别带get/set访问器的属性。

解决步骤

1. 修改UserSearchOptions类为属性形式

把原来的字段定义改成带get和set的属性,示例如下:

public class UserSearchOptions
{
    public int Skip { get; set; }
    public int PageSize { get; set; }
    public string? SortCol { get; set; }
    public string? SortColDir { get; set; }
    public string? SearchVal { get; set; } // 建议首字母大写符合C#规范,若要匹配原小写JSON键可加注解
    public int UserId { get; set; }
}

2. (可选)统一JSON字段名匹配

如果希望保持JSON传参的键名(比如searchVal小写)和类属性名的映射,可以添加System.Text.Json注解:

using System.Text.Json.Serialization;

public class UserSearchOptions
{
    public int Skip { get; set; }
    public int PageSize { get; set; }
    public string? SortCol { get; set; }
    public string? SortColDir { get; set; }
    [JsonPropertyName("searchVal")]
    public string? SearchVal { get; set; }
    public int UserId { get; set; }
}

3. 验证效果

修改完成后重启API:

  • Swagger会自动识别UserSearchOptions作为请求体参数,展示完整的模型结构
  • Postman调用时,传递的JSON参数会正确绑定到prmUSO对象中

核心原因

ASP.NET Core的模型绑定需要通过属性的set访问器赋值,字段没有这类访问器无法完成绑定;同时Swagger的文档生成逻辑依赖反射读取类的属性信息构建请求模型,字段不会被纳入识别范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:42:08