C# 后嵌套模型
目前,我的api帖子的工作原理如下: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/
{
"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请求给了我一个错误。你能给出类定义吗?