Ich habe ein seltsames Problem in ASP.NET Web API. Ich habe eine generische Klasse erstellt, um das zurückgegebene Modell für alle Webmethoden zu sein. Dies ist der Code des Modells: -Web-API - Fehler bei der Stichprobengenerierung
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; }
}
Jedes Mal, wenn ich es in HTTP-Methode wie folgt Versuchen Sie es mit:
public RequestResponse<BillsModel> CreateBill([FromBody] BillsModel billToAdd, MainHelpers.UserType userType)
Dies ist BillsModel Klasse:
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; }
}
Und dann läuft die api siehe die Methoden und Verfahren der Wahl, ich sehe die folgenden:
{
"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"
}
]
}
}
Wie Sie sehen können, funktioniert es gut, wenn es um ein Objekt geht, aber wenn es um eine Liste geht, wird ein nicht identifiziertes Objekt "$ ref" angezeigt. Dasselbe gilt für "$ id" und "$ values".
Können Sie mir bitte dabei helfen?
Was für BillsModel die Klassendefinition ist? basiert es auf dem Entity Framework? Vielleicht sind das zusätzliche Metadaten in Bezug auf EF? – dfdsfdsfsdf
Nein, es ist eine benutzerdefinierte Klasse mit nur normalen Eigenschaften wie string, int, ... etc. Ich musste dies tun, da EF-Modelle ein Problem machten, als ich versuchte, sie direkt als Parameter oder als Rückgabetyp zu verwenden. –
Sie sollten den JSON hier anstelle eines Screenshots kopieren/einfügen. Wie für die '$ ...' Schlüssel sind sie Referenzen. Mehr über sie [hier] (http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_PreserveReferencesHandling.htm) – Nasreddine