2017-02-16 13 views
11

私はAsp.Net Coreで構築している新しいAPIを持っており、エンドポイントにPOSTされたデータは取得できません。Asp.Net Core投稿FromBody常に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 
} 

ここ

は、エンドポイントは次のようになります。 content-type = application/jsonのPOSTとして設定します。私は間違って何をしていますか?

答えて

20

すべての投稿変数を1つのオブジェクト内にカプセル化する必要があるため、常にnullとなります。このように:.NET 4.5での問題ではなかった

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

、その後

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

、それはでしたか? POSTで複数のパラメータを送信したことを覚えていることを誓ってもらえます。 –

+3

@AlexKibler:フォーム経由でパラメータを送信したりクエリを取得した場合にのみ、あなたの体には単一のモデルしかないので、非基本型(int、stringなど)はすべて最初のモデルにシリアライズされます。 WebAPIとMVCが単一のフレームワークにマージされるため、ASP.NET Core(4.5または.NET Coreとは独立)では、WebAPIとMVCが以前は別のフレームワークにマージされているため、単一のFromBody(WebApi 2.xでは暗黙的に)を持つことができます。 – Tseng

関連する問題