1

私は複雑なjson構造を持っています。これも同様に発生するため、ここでは簡略化しています。

{
"Id":0,
"Name":"Region Challenge",
"ModifiedOn":"2011-09-08T17:49:22",
"State":"Published",
"Goals":[
        {"Id":1,"Description":"some text here","DisplayOrder":1},
        {"Id":2,"Description":"some text here","DisplayOrder":2}
    ]
}

したがって、このデータがコントローラーに POST されると、Id、Name などの値を問題なく取得できます。ただし、ローカル ウィンドウを見ると、目標は null です。

署名は次のとおりです。

public JsonResult Save(int Id, String Name, DateTime ModifiedOn, String State, String Goals)

POST ヘッダーは次のとおりです。

User-Agent: Fiddler
Host: localhost:2515
Content-Type: application/json
Content-Length: 7336

データを反復処理できるようにデータを読み込むにはどうすればよいですか?

ありがとう!エリック

4

2 に答える 2

1

YourGoalsは配列またはリストです。最も簡単な方法は、

  1. ビューモデルを作成する
  2. ActionMethod を変更する

サンプル

ビューモデル

public class SomeThing
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime ModifiedOn { get; set; }
    public string State { get; set; }
    public List<Goal> Goals { get; set; }
}

public class Goal
{
    public int Id { get; set; }
    public string Description{ get; set; }
    public int DisplayOrder{ get; set; }
}

変更されたアクション方法

public JsonResult Save(SomeThing model)
{
   // model.Name ....
   // model.Id ...
   // model.Goals is your list of Goals

   // return Json
}

詳しくは

于 2012-08-02T20:36:52.670 に答える
0

のようなクラスを定義します

public class MyClass{
 public int Id{get;set;}
 public string Name {get;set;}
 public string State {get;set;}
 public IList<Goals> Goals {get;set;}
}

あなたの目標クラスは次のようになります

Public class Goals{

 public int Id{get;set;}
 public string Description {get;set;}
 public int DisplayOrder {get;set}
}

その後、次のように受け取りました

public JsonResult Save(MyClass _MyClass)

ajax経由で送信する場合のように、パラメータ名を含める必要があります

 data:{_MyClass: yourJSON}
于 2012-08-02T20:37:13.120 に答える