【问题标题】:Multiple Complex Objects with .net core具有 .net 核心的多个复杂对象
【发布时间】:2020-04-12 22:44:07
【问题描述】:

我已经尝试了很多年,但无济于事。

我希望能够通过 Json 接收多个复杂对象,但由于某种原因 .net 核心仅绑定到 TOP 级别...

这是我在控制器方法中使用的模型:

    public class CustomerSendDetailsModel
    {
        public string name { get; set; }
        CampaignMonitorDataModel CampaignData { get; set; }
        CustomerContactInfo CustomerData { get; set; }
    }

这里是控制器方法(注意:它只得到测试数据atm)

        [HttpPost]
        public ActionResult<IEnumerable<string>> GetData([FromBody]CustomerSendDetailsModel customerDetails)
        {
            return new string[] { "green widget", "red widget" };
        }

现在使用 PostMan 发送此 JSON 后,唯一绑定的数据是字符串“名称”。

{
    "name": "TEST",
    "campaignData": {
        "cId": "direct"
    },
    "customerData": {
        "firstName": "bob"
    }
}

有谁知道为什么这不能正常工作? :/

我已经看到你可以使用 JObject,但我真的希望能够使用这种方法作为它的清洁器来做到这一点......

【问题讨论】:

  • 您是否 100% 使用 Content-Type: application/json 发送 Post 请求?如果您也发布CampaignMonitorDataModel 结构,这将很有价值。
  • 谢谢帮忙,最后是小事哈哈 -_-

标签: .net json api asp.net-core


【解决方案1】:

好的,这很烦人,因为我尝试了很多东西,这让我很烦......

但基本上,这只是因为我没有在 DTO 中将对象设置为 Public:

    public class CustomerSendDetailsModel
    {
        public string name { get; set; }
        CampaignMonitorDataModel CampaignData { get; set; }
        CustomerContactInfo CustomerData { get; set; }
    }

应该是:

    public class CustomerSendDetailsModel
    {
        public string name { get; set; }
        public CampaignMonitorDataModel CampaignData { get; set; }
        public CustomerContactInfo CustomerData { get; set; }
    }

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多