2012-04-20 14 views
0

私はアクションメソッドにJSONオブジェクトを送ります。すべてがクライアント側で動作し、JSONオブジェクトは正しいように見えますが、設定されている唯一の値は単純なプロパティです。リストの数は常に0です。Jsonモデルバインダーが入れ子になっていないList <T> Asp.Net MVC 3

次は、サーバーに送信されるJSONオブジェクトの例です。私はちょうど全体のJSON文字列を警告し、以下にそれを貼り付け:ここ

{"Tags":" 
[{\"Id\":0,\"Title\":\"Windows 8\",\"TagType\":\"Generic\"},{\"Id\":0,\"Title\":\"Dreamweaver\",\"TagType\":\"Generic\"},{\"Id\":0,\"Title\":\"Word\",\"TagType\":\"Generic\"}]", 
"CurrentPage":"5", 
"ItemsPerPage":"10", 
"SearchPhrase":"blaha"} 

は、C#のクラスは次のとおりです。ここで

public class SearchParams 
{ 
    public List<Tag> Tags { get; set; } 
    public string ItemsPerPage { get; set; } 
    public string SearchPhrase { get; set; } 
    public string CurrentPage { get; set; } 
} 

public class Tag 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public string TagType { get; set; } 
} 

は、アクションメソッドである:結合

public JsonResult Search(SearchParams searchParams) 
{ 
    //Stuff happens here 
} 

モデルのために働いています3つの文字列プロパティ:

ItemsPerPage == 10 
SearchPhrase == "blaha" 
CurrentPage == 5 
Tag.Count == 0 ???? 

ここに3つのタグ項目があるはずです:(

ここには何か分かりにくいものがありますか?

BR

キム

+0

jsの設定はどのように見えますか? 'JSON.stringify'を使って? –

+0

はい私はStringifyを使用しています。クライアント側はあまりにも複雑で混乱の原因になりますので、何も貼り付けることは避けました。 knockoutjs observablesとノックアウト観測配列はjqueryのオートコンプリートなどを使用しています...私は問題が非常にシンプルだったのでうれしいです。私は最初にko.ToJsonでオブジェクトをシリアライズしていましたが、後でJSON.Stringifyを使用して配列内の基底のjsonオブジェクトを破損させました – Kimpo

答えて

3

あなたのJSONを確認する最初の...

{  "Tags": " [{\"Id\":0,\"Title\":\"Windows 8\",\"TagType\":\"Generic\"},{\"Id\":0,\"Title\":\"Dreamweaver\",\"TagType\":\"Generic\"},{\"Id\":0,\"Title\":\"Word\",\"TagType\":\"Generic\"}]",  "CurrentPage": "5",  "ItemsPerPage": "10",  "SearchPhrase": "blaha" } 

私はいくつかのエラーがJSONであるJSONバリデータによってそれをテスト...

http://jsonlint.com/ 

http://jsonformatter.curiousconcept.com/ 

チェックそれ...

+0

okありがとう、私は今jsonが正しく見えていないことに気付きました。オブジェクトのプロパティ名\ "はエスケープされます – Kimpo

+0

素晴らしい。 –

0

これは古いですが、レコードのためにジェネリックリストを作成するデフォルトのコンストラクタが私の行うことです。それは常に動作します:

public class SearchParams 
{ 
    public List<Tag> Tags { get; set; } 
    public string ItemsPerPage { get; set; } 
    public string SearchPhrase { get; set; } 
    public string CurrentPage { get; set; } 

    public SearchParams() { 
     Tags = new List<Tag>(); 
    } 
} 
関連する問題