我正在尝试将JSON对象发布到MVC3控制器。我在stackoverflow中看到了这方面的解决方案,但大多数解决方案都是将JSON对象绑定到模型的位置。如何将post JSON对象(数组)转换为通用c#Object类型的数组?或者允许我循环遍历json对象的东西。请记住,对象永远不会相同。我基本上想要创建一个控制器,它允许我循环json对象并从那里获取数据。目前我现在在MVC控制器中得到一个对象数组,但是我似乎无法看到它们中的数据。有什么想法吗?
不知道我是否走正路。
谢谢你, -Tesh
使用Javascript:
var parm = JSON.stringify({ session_id: sessionId, data: data, metaData: metaData })
var ret = "";
$.ajax({
type: 'post',
cache: false,
url: path + "/Common/Export/Load",
data: parm,
dataType: "json",
contentType: "application/json; charset=utf-8",
traditional: true,
async: false,
success: function (data) {
//ret = data.Table[0].Column1;
},
error: function (event, request, settings) {
//alert('save error: ' + JSON.stringify(request)) + ', ' + JSON.stringify(settings);
}
});
MVC控制器
[HttpPost]
public ActionResult Load(String session_id, List<object> data, Object metaData)
{
return View();
}
JSON对象传递给Controller。对象可以随时。
{
“表格”:[ { “first_name”:约翰, “last_name”:Doe, “creation_date”:“2012-10-04T15:50:37.55”, “created_by”:玛丽珍, “last_modified_date”:“2012-10-04T15:50:37.55”, “last_modified_by”:Jon Mitchell
},
{
"first_name": Bill,
"last_name": Doe,
"creation_date": "2012-10-04T15:50:37.55",
"created_by": Jane Wick,
"last_modified_date": "2012-10-04T15:50:37.55",
"last_modified_by": Jon Mitchell
}
] }
答案 0 :(得分:1)
默认情况下,对象的属性非常少,因此JSON绑定器不会绑定任何属性。
如果您有要循环和获取的公共属性,请将它们声明为ViewModel,然后将其设置为列表对象中的参数。
public class BaseModel
{
public DateTime creation_date {get;set;}
}
然后您可以使用
public ActionResult Load(String session_id, List<BaseModel> data, Object metaData)
{
...
}
如果你真的需要将它绑定到一个对象,你可以尝试类似这个链接:
Turning JSON into a ExpandoObject
HTH
的Si