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
相关产品推荐
相关产品推荐

