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}
    ]
}

因此,当将此数据发布到控制器时,我可以毫无问题地获取 Id、Name 等的这些值。但是,当我查看本地窗口时,Goals 为空。

签名是:

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

Goals是一个数组或列表。最简单的方法是

  1. 创建一个视图模型
  2. 更改操作方法

样本

视图模型

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 回答