.net 核心请求列表参数始终为空
Posted
技术标签:
【中文标题】.net 核心请求列表参数始终为空【英文标题】:.net core request list parameter always gets null 【发布时间】:2022-01-11 02:06:03 【问题描述】:我正在尝试将 http post 请求中的对象列表发送到 .net 核心应用程序,但我在控制器中的列表始终为空。 当我使用 JsonConvert 解析代码中的 json 时,它运行完美。 我找不到为什么它不能正确绑定到模型。
我的行动:
public async Task<ActionResult> FileTypes([FromBody] FileTypesRequest data)
文件类型请求:
public class FileTypesRequest
public List<FileTypeChoice> FileTypes;
文件类型选择:
public class FileTypeChoice
public string Content get; set;
public string Type get; set;
邮递员请求正文:
"fileTypes": [
"content": "test",
"type": "excel"
,
"content": "test2",
"type": "excel"
]
有什么帮助吗? 谢谢!
【问题讨论】:
请告诉我们正在向服务器发出的确切请求。 POST /FileTypes HTTP/1.1 主机:localhost:1000 内容类型:应用程序/json 内容长度:199 "fileTypes": [ "content": "test", "type": "excel" , "content": "test2", "type": "excel" ] @OrelEraki 似乎是案例问题。您在 Pascal 案例中拥有您的财产,而您在骆驼案例中传递的数据。 @शेखर .NET 默认情况下已从 camelCase 反序列化为 PascalCase 多年。所以这不太可能是一个案例问题,除非发布者在不知不觉中配置了一些非默认行为。 @Noah 是的,你是对的。似乎还有其他问题。 【参考方案1】:好的,我找到了解决方案
public class FileTypesRequest
public List<FileTypeChoice> FileTypes;
到
public class FileTypesRequest
public List<FileTypeChoice> FileTypes get; set;
将文件类型从变量变为属性。
【讨论】:
【参考方案2】:不是只是试图帮助诊断的答案
启用 HttpLogging
在 Startup.cs 文件中使用 AddHttpLogging
和 UseHttpLogging
方法。
您应该能够在控制台日志中看到请求正文。
大多数情况下,当大小写不匹配时,这些值为 null。当您将控制器添加到服务时,将 Json 配置为匹配大小写。 (骆驼或成员套管)
services.AddControllers()
.AddJsonOptions(options =>
// ...
);
【讨论】:
这是一些合理的诊断建议。但这不是答案……以上是关于.net 核心请求列表参数始终为空的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET WebApi HttpPost 参数始终为空
HttpServletRequest 参数映射始终为空 [关闭]