我有一个使用jquery [Flags]
public enum Options
{
None = 0,
Option1 = 1,
Option2 = 2,
Option3 = 4,
Option4 = 8
}
的表单将以下JSON发送到服务器:
$.post
JSON发布到类似于此的控制器:
{
id: 1,
label: "myLabel",
results: [
{ name: "myName1", value: "myValue1" },
{ name: "myName2", value: "myValue2" }
]
}
我也有以下课程:
public ActionResult Submit(int id, string label, List<object> results){...}
我希望能够播放JSON&#39;结果&#39;的内容。数组到&#39; FormValue&#39;我可以将控制器编写为:
public class FormValue {
public string name {get;set;}
public string value {get;set;}
}
我错过了什么?
答案 0 :(得分:2)
在接收端你有1个c#对象。所以你会有像
这样的东西public class Model {
public string Id {get;set;}
public string Label {get;set;}
public List<FormValues> Results {get;set;}
}
然后该类型成为action方法中的单个参数。
[HttpPost] // do not forget this
public ActionResult Submit(Model model){/*...*/}
这是因为您在Http方法体中发送的json对象只能映射到单个对应的c#对象(如果您使用的是内置绑定)。
还要注意对Http动词的限制。如果操作被视为幂等,您也可以使用HttpPut
。 这绝不是HttpGet
方法,因为Http get不支持邮件正文。