【问题标题】:.net core request list parameter always gets null.net 核心请求列表参数始终为空
【发布时间】: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 是的,你是对的。似乎还有其他问题。

标签: c# asp.net-core .net-core


【解决方案1】:

好的,我找到了解决方案

public class FileTypesRequest
{
   public List<FileTypeChoice> FileTypes;
}

public class FileTypesRequest
{ 
   public List<FileTypeChoice> FileTypes { get; set; }
}

将文件类型从变量变为属性。

【讨论】:

    【解决方案2】:

    不是只是试图帮助诊断的答案

    启用 HttpLogging 在 Startup.cs 文件中使用 AddHttpLoggingUseHttpLogging 方法。

    您应该能够在控制台日志中看到请求正文。

    大多数情况下,当大小写不匹配时,这些值为 null。当您将控制器添加到服务时,将 Json 配置为匹配大小写。 (骆驼或成员套管)

    services.AddControllers()
        .AddJsonOptions(options =>
        {
            // ...
        });
    

    【讨论】:

    • 这是一些合理的诊断建议。但这不是答案……
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2023-02-06
    相关资源
    最近更新 更多