2017-02-16 7 views
11

Ich habe eine neue API, die ich mit Asp.Net Core erstellen, und ich kann keine Daten an einen Endpunkt POST.Asp.Net Core Post FromBody Immer Null

Hier ist, was der Endpunkt wie folgt aussieht:

[HttpPost] 
[Route("StudentResults")] 
public async Task<IActionResult> GetStudentResults([FromBody]List<string> userSocs, [FromBody]int collegeId) 
{ 
    var college = await _collegeService.GetCollegeByID(collegeId); 
    // var occupations = await _laborMarketService.GetOccupationProgramsBySocsAndCollege(userSocs, college); 
    return Ok(); 
} 

Und hier ist es, was meine Nutzlast, die ich durch Postman bin das Senden wie folgt aussieht:

{ 
    "userSocs": [ 
      "291123", 
      "291171", 
      "312021", 
      "291071", 
      "152031", 
      "533011" 
     ], 
    "collegeId": 1 
} 

ich sicher mache, dass ich Postbote haben Als POST mit dem Inhaltstyp = application/json festgelegt. Was mache ich falsch?

Antwort

20

Sie erhalten immer null, weil Sie alle Post-Variablen in nur einem Objekt einkapseln müssen. Wie folgt aus:

public class MyPostModel { 
    public List<string> userSocs {get; set;} 
    public int collegeId {get; set;} 
} 

und dann

public async Task<IActionResult> GetStudentResults([FromBody] MyPostModel postModel) 
+0

Das ist nicht ein Problem in .NET 4.5 war, war es? Ich könnte schwören, ich erinnere mich, senden mehrere Parameter in einem POST –

+3

@AlexKibler: Nur wenn Sie die Parameter per Formular senden oder abfragen. Sie können nur ein einzelnes Modell in Ihrem Körper haben, so dass jeder nicht-grundlegende Typ (int, string, usw.) zum ersten Modell serialisiert wird. In ASP.NET Core (unabhängig von 4.5 oder .NET Core) können Sie nur einen einzigen FromBody haben (in WebApi 2.x war es implizit), weil WebAPI und MVC jetzt in einem einzigen Framework zusammengeführt werden, wo sie vorher verschieden waren – Tseng