Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#解析JSON对象数组以列出<;T>;_C#_Jquery_Json_Asp.net Mvc - Fatal编程技术网

C#解析JSON对象数组以列出<;T>;

C#解析JSON对象数组以列出<;T>;,c#,jquery,json,asp.net-mvc,C#,Jquery,Json,Asp.net Mvc,我有一个表单,它使用jquery$.post将以下JSON发送到服务器: { id: 1, label: "myLabel", results: [ { name: "myName1", value: "myValue1" }, { name: "myName2", value: "myValue2" } ] } JSON被发布到一个类似以下内容的控制器: public ActionResult Submit(int id, st

我有一个表单,它使用jquery
$.post
将以下JSON发送到服务器:

{
    id: 1,
    label: "myLabel",
    results: [
        { name: "myName1", value: "myValue1" },
        { name: "myName2", value: "myValue2" }
    ]
}
JSON被发布到一个类似以下内容的控制器:

public ActionResult Submit(int id, string label, List<object> results){...}
我希望能够将JSON“results”数组的内容强制转换为“FormValue”类,以便将控制器编写为:

public ActionResult Submit(int id, string label, List<FormValue> results){...}
public ActionResult提交(int-id、字符串标签、列表结果){…}

我遗漏了什么?

在接收端有一个c对象。所以你会有类似的

public class Model { 
  public string Id {get;set;} 
  public string Label {get;set;} 
  public List<FormValues> Results {get;set;}
}
这是因为您在Http方法体中发送的json对象只能映射到单个对应的c#对象(如果您使用的是内置绑定)


还要注意对Http谓词的限制。如果动作被认为是幂等的,还可以使用
HttpPut
。这永远不能是
HttpGet
方法,因为HttpGet不支持消息体。

在接收端有一个c#object。所以你会有类似的

public class Model { 
  public string Id {get;set;} 
  public string Label {get;set;} 
  public List<FormValues> Results {get;set;}
}
这是因为您在Http方法体中发送的json对象只能映射到单个对应的c#对象(如果您使用的是内置绑定)


还要注意对Http谓词的限制。如果动作被认为是幂等的,还可以使用
HttpPut
。这永远不能是一个
HttpGet
方法,因为HttpGet不支持消息体。

首先,它应该是
results:[{…},{…}]
键入的错误。它是一个数组,所以我假设这是一个MVC或Web API控制器。不能将一个json对象绑定到多个参数。您必须有一个表示json的对象(以及1个方法参数)。或者,您可以使用查询字符串参数发送其他部分(id、标签),并将结果作为http正文中的json对象发送。向MVC发送Yes。我看到一些示例,其中要发送的json数据使用json.stringify将其作为一个字符串而不是对象传递,因此$.post要发送的数据是:var dataToBeSent={id:data.id,label:data.label,results:$('#form').serializeArray()@Ryanduphy-正确,但在接收端有1个c#object。因此,您将有类似于
公共类模型{public string Id{get;set;}公共字符串标签{get;set;}公共列表结果{get;set;}}
。然后,该类型将成为操作方法中的单个参数。首先,它应该是
results:[{…},{…}]
输入错误的类型。它是一个数组,所以我假设这是一个MVC或Web API控制器。不能将一个json对象绑定到多个参数。您必须有一个表示json的对象(以及1个方法参数)。或者,您可以使用查询字符串参数发送其他部分(id、标签),并将结果作为http正文中的json对象发送。向MVC发送Yes。我看到一些示例,其中要发送的json数据使用json.stringify将其作为一个字符串而不是对象传递,因此$.post要发送的数据是:var dataToBeSent={id:data.id,label:data.label,results:$('#form').serializeArray()@Ryanduphy-正确,但在接收端有1个c#object。因此,您将有类似于
公共类模型{public string Id{get;set;}公共字符串标签{get;set;}公共列表结果{get;set;}}
。然后,该类型将成为动作方法中的单个参数。
[HttpPost] // do not forget this
public ActionResult Submit(Model model){/*...*/}