C# 后嵌套模型

C# 后嵌套模型,c#,asp.net,asp.net-mvc,django,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Django,Asp.net Web Api,目前,我的api帖子的工作原理如下: { "id": 1, "baseProduct": 1, "productDescription": "sample string 2", "images": [ "QEA=", "QEA=" ], "price": 3, "estimatedShippingDate": "2017-03-31T20:41:03.2760924+09:00" } POST:localhost:55974/api/trades/

目前,我的api帖子的工作原理如下:

{
  "id": 1,
  "baseProduct": 1,
  "productDescription": "sample string 2",
  "images": [
    "QEA=",
    "QEA="
  ],
  "price": 3,
  "estimatedShippingDate": "2017-03-31T20:41:03.2760924+09:00"
}
POST:localhost:55974/api/trades/

{
  "id": 1,
  "baseProduct": {
    "id": 1,
    "productID": "sample string 2",
    "tags": [
      "sample string 1",
      "sample string 2"
    ]
  },
  "productDescription": "sample string 2",
  "images": [
    "QEA=",
    "QEA="
  ],
  "price": 3,
  "estimatedShippingDate": "2017-03-31T20:41:03.2760924+09:00"
}
我想要的是将现有数据与其id链接;大概是这样的:

{
  "id": 1,
  "baseProduct": 1,
  "productDescription": "sample string 2",
  "images": [
    "QEA=",
    "QEA="
  ],
  "price": 3,
  "estimatedShippingDate": "2017-03-31T20:41:03.2760924+09:00"
}
请注意,
baseProduct
已更改为其ID,但当我尝试执行此操作时,会出现以下错误:

{
  "Message": "The request is invalid.",
  "ModelState": {
    "tradeModel.baseProduct": [
      "Error converting value 3 to type 'EodiRoad.Models.BaseProductModel'. Path 'baseProduct', line 2, position 19."
    ]
  }
}
这在django中运行得很好,所以我想它也会在ASP.NET上运行。 有什么可能的解决办法吗

==编辑==== 我的数据模型如下所示

Trademodel.cs

public class TradeModel
    {
        public int id { get; set; }


        [Required]
        [ForeignKey("baseProduct")]
        public int baseProductId { get; set; }

        public virtual BaseProductModel baseProduct { get; set; }

        // public BaseProductModel baseProduct { get; set; }

        public string productDescription { get; set; }
        public List<byte[]> images { get; set; }
        public int price { get; set; }
        // Date infos
        public DateTime estimatedShippingDate { get; set; }

    }
公共类交易模型
{
公共int id{get;set;}
[必需]
[外键(“基本产品”)]
public int baseProductId{get;set;}
公共虚拟BaseProductModel baseProduct{get;set;}
//public BaseProductModel baseProduct{get;set;}
公共字符串productDescription{get;set;}
公共列表图像{get;set;}
公共整数价格{get;set;}
//日期信息
public DateTime estimatedShippingDate{get;set;}
}
BaseProductModel.cs

public class BaseProductModel
{

    public int id { get; set; }
    public string productID { get; set; }
    // Not in use
    public List<string> tags { get; set;}
}
公共类BaseProductModel
{
公共int id{get;set;}
公共字符串productID{get;set;}
//不用
公共列表标记{get;set;}
}

假设您在后台使用实体框架,这里的解决方案应该可以工作,谢谢!!那就行了。但我不知道如何实现这个..[RequiredNotDefault]这对它来说并不重要,只是将id作为字段,将对象作为虚拟对象。实际上,我们在这里使用的required not default是一个自定义数据注释,[required]就可以了。我们使用它来确保int不是0,字符串不是空的,guid不是0,etcasp.net仍然要求我输入baseProductId和baseProduct的形式get请求给了我一个错误。你能给出类定义吗?