2017-02-13 4 views
0

私に優しくしてください。私は専門家ではありません。ajax投稿.net web apiパラメータがnullです

Imは、私は唯一のポストで統計== nullの(一覧統計)得るもの、どんなに有効なJSON(検証)

{ 
"Stats": [{ 
    "userName": "sadf", 
    "id": "128", 
    "score": "7" 
}, { 
    "userName": "fa", 
    "id": "417", 
    "score": "3" 
}] 
} 



// POST api/comment 
public void Post(List<Stat> Stats) 
{ 
    string break= "Breakpoint here"; 
} 


public class Stat 
{ 
public string userName { get; set; } 
public string id { get; set; } 
public string score { get; set; } 
} 

を投稿しません

これはjavascriptのコードです:

var stats = [{ "userName": "sadf" }, 
       { "userName": "fa" }]; 

     $.ajax({ 
      type: "POST", 
      url: "http://localhost:56887/api/comment", 
      data: JSON.stringify({ Stats: stats }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       $.each(stats, function (k, v) { 
        alert(v.position); 
       }); 
      }, 
      failure: function (errMsg) { 
       alert(errMsg); 

      } 
     }); 

何が問題なのですか?

+1

[FromBody]属性をメソッドに追加する必要があります。この回答を見るhttp://stackoverflow.com/a/10986030/3279876 – Sami

+0

私はすでに結果なしでそれを試みました。 –

+1

その場合は、あなたのajax投稿コード全体を表示してください。 – Sami

答えて

1

あなたは、このJSON構造に一致するビューモデルを必要とする:あなたのコントローラのアクションがパラメータとして取る

public class MyViewModel 
{ 
    public IList<Stat> Stats { get; set; } 
} 

:あなたはList<Stat>に直接、すべてをバインドしたい場合は

public void Post(MyViewModel model) 
{ 
    // model.Stats will contain the desired collection here 
} 

あなたがする必要があるStats人工的に導入する文字列化するときに導入する:

data: JSON.stringify(stats), 

また、コントローラーアクションがvoidで、明らかに間違っている何も返さず、コントローラーアクションシグニチャーがASP.NET Webのように見えるものでない場合は、このパラメーターdataType: "json",を再考することもできますAPI。

+0

data:JSON.stringify(stats)、データを変更してみてください。どうもありがとう。 –

関連する問題