我正在尝试将一个对象数组发送到我的控制器,但遇到了一些困难。
它正在发送数组,当传送到控制器时,数组的对象数也似乎正常。
但是如果您要查看对象内部对象的所有属性都是null
怎么可能?
JavaScript的:
function callme(results) {
for (var i = 0; i < results.length; i++) {
var endRes = {
Id: results[i].id,
Icon: results[i].icon
};
jsonObj.push(endRes);
}
sendPackage(jsonObj);
}
function sendPackage(jsonObj) {
$.ajax({
type: "POST",
url: '../../Home/RegisterList',
data: { List: jsonObj },
cache: false,
dataType: "json",
error: function (x, e, data) {
alert(data);
}
});
}
控制器:
[HttpPost]
public JsonResult RegisterList(ICollection<DetailsModel> List)
{
foreach (var i in List) ....... // other process will be here
............................... // other process will be here
return Json(new { message = "OK" });
}
型号:
public class DetailsModel
{
public string Id { get; set; }
public string Icon { get; set; }
}
答案 0 :(得分:4)
好的我昨晚通过使用Newton的JSON.NET解决了这个问题(你可以从NuGet获得)。我已经对数组进行了字符串化并将其作为控制器的字符串接收。最后,我使用json.net将此字符串转换(反序列化)为集合。
要字符串化:使用相同的代码,但使用以下命令更改json请求的数据部分:
data: { List : JSON.stringify(jsonObj) }
最后收到:
using Newtonsoft.Json;
public JsonResult RegisterList(string List)
{
ICollection<DetailsModel> jsonModel = JsonConvert.DeserializeObject<ICollection<DetailsModel>>(List);
}
瞧;你有一个名为jsonModel的集合!
答案 1 :(得分:3)
不幸的是,列表的模型绑定在MVC中并不那么好看。看到: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
以这种方式传递列表:
数据:{“List [0] .Id”:“1”,“List [0] .Icon”:“test”}