2017-02-16 5 views
11

У меня есть новый API, который я создаю с помощью Asp.Net Core, и я не могу получить никаких данных POSTed до конечной точки.Asp.Net Core Post FromBody Always Null

Вот что конечная точка выглядит следующим образом:

[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(); 
} 

И вот что мой полезный груз, который я посылаю через Почтальон выглядит следующим образом:

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

Я убедившись, что у меня есть почтальона установлен как POST, с content-type = application/json. Что я делаю неправильно?

ответ

20

Вы всегда получаете null, потому что вам нужно инкапсулировать все ваши переменные сообщения только в одном объекте. Как это:

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

, а затем

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

Это не было проблемой в .NET 4.5, это был? Я могу поклясться, что я помню, как отправлял несколько параметров в POST –

+3

@AlexKibler: Только если вы отправляете параметры через форму или получаете запрос. У вас может быть только одна модель в вашем теле, поэтому любой не базовый тип (int, string и т. Д.) Будет сериализован для первой модели. В ASP.NET Core (независимый от 4.5 или .NET Core) вы можете иметь только один FromBody (в WebApi 2.x он был неявным), потому что WebAPI и MVC теперь объединены в единую структуру, где они были отличными ранее – Tseng

Смежные вопросы