2016-03-22 12 views
2

ich auf einer AngularJS App arbeitete, und eine der Methoden in dem Post-Daten js Service zu einem Web-api mit folgenden Objektstruktur in C#AngularJS Beitrag Objekt mit Kind Sammlungen zu einem MVC WebAPI

public class InvitationModel 
{ 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public EventModel[] EventList { get; set; } 
} 

public class EventModel 
{ 
    public string EventName { get; set; } 
    public int TotalAdults { get; set; } 
    public int TotalChildren { get; set; } 
    public bool IsAccepted { get; set; } 
} 

Problem ist, dass, wenn ich diese Daten an eine WEBAPI-Methode poste, meine Parent-Level-Eigenschaften korrekt serialisiert werden, mit Ausnahme desjenigen, der die Auflistung enthält. Es wird immer auf null gesetzt.

Die Web-API-Methode, die die Anforderung recieves ist:

[AllowAnonymous] 
[Route("RSVP")] 
[HttpPost] 
public bool Submit(InvitationModel invitationModel) 
{ 
    return true; 
} 

Also, Name und E-Mail-serialize richtig, aber Event

ich NULL ist auf der JavaScript-Seite hat zu überprüfen, und meine js Objekt enthält sowohl das Array als auch andere primitive Eigenschaften. Problem Ich vermute, ist auf der .NET-WebAPI-Seite.

Anfrage Nutzlast, die so etwas wie dies geschrieben wird ist:

{ "Name":"John Doe", 
    "EventList":{ 
     "0":{ "TotalAdults":"1", 
       "TotalChildren":"2", 
       "EventName":"Event 1 Name" 
     }, 
     "1":{ "TotalChildren":"2", 
       "TotalAdults":"2", 
       "EventName":"Event 2 Name" 
     }, 
     "2":{ "TotalAdults":"1", 
       "TotalChildren":"1", 
       "EventName":"Event 3 Name" 
     } 
    } 
} 
+0

Haben Sie die Informationen überprüft, die Sie bei einer Abfrage erhalten, und die Informationen, die Sie in Ihrem eckigen Beitrag erhalten, haben dasselbe Format? Kannst du ein Beispiel von beiden posten? Ich hatte dort ein ähnliches Problem. – r007

+0

Nun, das ist, wie ich meine ng-Modelle einstellen: indata.im.EventList [0] .TotalAdults – user3276940

Antwort

3

Die EventList in Ihrem JSON ist ein Objekt mit Eigenschaften "0" "1" usw.

Ich denke, es ist ein JSON sein sollte Array, dh

{ 
    "Name":"John Doe", 
    "EventList": [ 
     {"TotalAdults":"1","TotalChildren":"2","EventName":"Event 1 Name"}, 
     {"TotalChildren":"2","TotalAdults":"2","EventName":"Event 2 Name"}, 
     ... 
    ], ... 

in Ihrer C# -Ereignisliste Eigenschaft korrekt gelesen werden.

+0

Ja, aber dann, wie diese Indizes zu entfernen? – user3276940

+0

@ user3276940 Sie müssen Ihre js-Objekte reorganisieren, um sie an die Serverstruktur anzupassen, oder - wenn Sie die Daten senden - eine Kopie erstellen, die mit dem Server übereinstimmt – wero