2017-11-07 15 views
2

ASP.NET 6 APIコントローラに移行しようとしていて、JS関数のPOSTデータがnullとして表示されています。ASP.NET APIコントローラでPOSTデータがnullの場合

私は、次のようなJSON要求を持っている:

// searchTerms is an array with 2 properties, Value and Type 
    $.ajax({ 
     type: 'Post', 
     contentType: 'application/json', 
     dataType: "json", 
     data: JSON.stringify({ 
      searchTerms 
     }) 

私はASP.NET 6 MVCコントローラにこれを投稿する場合:

public ActionResult Search(List<SearchTerm> searchTerms) 

その後、私のSearchTermsリストが正しく入力されます。私はAPIコントローラ

[System.Web.Http.HttpPost] 
    [System.Web.Http.Route("api/search")] 
    public IHttpActionResult Search([FromBody] List<SearchTerm> searchTerms) 

その後のSearchTermsに投稿する場合

はnullです。

私はcontentType、dataTypeを変更しようとしましたが、stringify関数を無駄に削除しました。

私は明らかに私が適切に拘束力はないよ、

public IHttpActionResult Search([FromBody] dynamic value) 

し、次を参照してくださいに変更署名に試してみましたか?

data: JSON.stringify({ 
    searchTerms 
}) 
だけで使用するように $.ajaxコールを変更

data: JSON.stringify(searchTerms) 
public class SearchTerm 
{ 
    public string Value { get; set; } 
    public string Type { get; set; } 

} 
+0

SearchTermモデルを投稿できますか? – Werner

+1

リストを直接渡すのではなく、 'SearchTerm'のリストを持つモデルを渡していると思います。しかし、それはちょうど推測です。 – Werner

+0

どうすれば解決できますか?それは古いコントローラのために働くことに注意してください。 –

答えて

4

の代わりに:ここで

enter image description here

は私の検索語モデルですあなたが好きなものに見えるJSON送信している:私は提案変更に伴い

{ 
    "seachTerms": [ 
     ... 
    ] 
} 

を、これはちょうどあなたの例では動作するはずの単純なJSON配列、になります。

+0

それはそれをしました!どうもありがとうございます! –

+0

簡単な質問ですが、他のパラメタを追加するにはどうすればよいですか? (整数) –

+0

@ Nkosiの答えを見てください:https://stackoverflow.com/a/44599682/2630078助けがあれば彼の答えをupvoteしてください。 –

関連する問題