【发布时间】:2017-01-11 17:42:59
【问题描述】:
我有一个表单,它使用 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){...}
我也有以下课程:
public class FormValue {
public string name {get;set;}
public string value {get;set;}
}
我希望能够将 JSON 'results' 数组的内容转换为 'FormValue' 类,这样我可以将控制器编写为:
public ActionResult Submit(int id, string label, List<FormValue> results){...}
我错过了什么?
【问题讨论】:
-
一,应该是
results: [ { ... }, { ... } ] -
输入错误。它是一个数组
-
另外我假设这是一个 MVC 或 Web API 控制器。您不能将单个 json 对象绑定到多个参数。您必须有一个代表 json 的对象(因此需要 1 个方法参数)。或者,您可以使用查询字符串参数和结果作为 http 正文中的 json 对象发送其他部分(id、标签)。
-
对 MVC 是的。我看到要发送的 json 数据使用 JSON.stringify 将其全部作为一个字符串而不是对象传递的示例,因此要发送的 $.post 数据将是: var dataToBeSent = { id: data.id, label : data.label, 结果: $('#form').serializeArray() };
-
@RyanDunphy - 正确,但在接收端您有 1 个 c# 对象。所以你会有类似
public class Model{public string Id {get;set;} public string Label {get;set;} public List<FormValues> Results {get;set;}}的东西。然后,该类型将成为您的操作方法中的单个参数。
标签: c# jquery json asp.net-mvc