【发布时间】:2016-09-18 04:42:00
【问题描述】:
我在 ASP.NET web api 中遇到了一个奇怪的问题。我创建了一个泛型类作为所有 Web 方法的返回模型。这是模型的代码:-
public class RequestResponse<T>
{
public bool Sucess { get; set; }
public string Message { get; set; }
public T ReturnedData { get; set; }
public List<T> ReturnedDataList { get; set; }
}
每当我尝试在这样的 HTTP 方法中使用它时:
public RequestResponse<BillsModel> CreateBill([FromBody] BillsModel billToAdd, MainHelpers.UserType userType)
这是 BillsModel 类:
public class BillsModel
{
public Guid Id { get; set; }
public DateTime BillDate { get; set; }
public long Number { get; set; }
public Guid OrderId { get; set; }
public int OrderType { get; set; }
public Guid PlaceId { get; set; }
public double TaxPercentage { get; set; }
public double? DiscountPercentage { get; set; }
public Guid CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public Guid? ModifiedBy { get; set; }
public DateTime? ModifiedOn { get; set; }
}
然后运行api查看方法并选择方法,我看到以下内容:
{
"Sucess" : true,
"Message" : "sample string 2",
"ReturnedData" : {
"$id" : "2",
"Id" : "14b479ec-c128-4916-8ed5-c0067c20fd9f",
"BillDate" : "2016-05-20T21:57:32.530957+02:00",
"Number" : 3,
"OrderId" : "dd266c00-0167-49e8-a8f0-0996aca21490",
"OrderType" : 5,
"PlaceId" : "98059b6e-acfb-4c89-8c6a-72ef30cce4d6",
"TaxPercentage" : 7.1,
"DiscountPercentage" : 1.1,
"CreatedBy" : "ba106082-44be-4a53-9d32-40bf4ee32bde",
"CreatedOn" : "2016-05-20T21:57:32.530957+02:00",
"ModifiedBy" : "3d164ffd-aa1c-40d4-a646-9d6ca91615db",
"ModifiedOn" : "2016-05-20T21:57:32.530957+02:00"
},
"ReturnedDataList" : {
"$id" : "3",
"$values" : [{
"$ref" : "2"
}, {
"$ref" : "2"
}
]
}
}
如您所见,当它是关于一个对象时它工作得很好,但是当它涉及一个列表时,一个未识别的对象显示为“$ref”。 “$id”和“$values”也一样。
你能帮帮我吗?
【问题讨论】:
-
BillsModel 的类定义是什么?它是基于实体框架的吗?也许,这些是与 EF 相关的附加元数据?
-
不,它是一个用户定义的类,只有普通的属性,如字符串、整数等。我必须这样做,因为当我尝试将 EF 模型直接用作参数或返回类型时,它们会出现问题。
-
您应该在此处复制/粘贴 JSON 而不是屏幕截图。至于
$...键,它们是参考。更多关于他们here -
@Nasreddine 我曾经在该列表中看到普通对象,而不是 $ref 和 $id。我怎样才能避免这种情况?
-
你能发布
BillsModel的定义吗?
标签: c# asp.net asp.net-mvc web-services asp.net-web-api