2016-03-31 7 views
0

私のASP.NET MVCのアクションは、次のようになります。私は、フロントエンドではHTTP POST要求はされていないJSONハッシュ正しくデシリアライズ

public class APIRequest 
{ 
    public Dictionary<string, string> Atts { get; set; } 

    public APIRequest() 
    { 

    } 
} 

public ActionResult Create(APIRequest request) 
{ 
} 

私のクラスは次のようになります次のようにAJAX呼び出しを送信しています:

var atts = { 
     'userId' : '10203', 
     'foo': '1', 
     'bar': '2', 
     'some-invalid-identifier': '3' 
    }; 



$.ajax({ 
     url: "/path/to/save", 
     type: "POST", 
     data: JSON.stringify(atts), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     error: function(r) { 

     }, 
     success: function(r) { 

     } 
    }); 

私のコントローラにブレークポイントを設定すると、要求変数Atts(辞書)p ropertyは常にnullです。

ここで何が間違っていますか?

答えて

2

お客様のjsonはAttsプロパティを提供していません。あなたがそれを送る方法では、モデルのバインダーはuserId、foo、bar、invalid-identifierの4つのプロパティーを探します。これは動作します:

{ 
    "Atts" : { "userId" : "10203", 
       "foo": "1", 
       "bar": "2", 
       "some-invalid-identifier": "3" 
      } 
}