将JSON对象(数组)发布到MVC3控制器



可能的重复:
通过JSON将对象数组发布到ASP。净MVC3

我正在尝试将JSON对象发布到MVC3控制器。我在stackoverflow中看到了这方面的解决方案,但大多数解决方案都是将JSON对象绑定到模型的地方。如何将postJSON对象(数组)转换为泛型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对象传递给控制器。对象可以在任何时间。

{

"表格":[{"first_name":约翰,"last_name":Doe,"creation_date":"2012-10-04T15:50:37.55","创建者":Mary Jane,"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
}

]}

默认情况下,对象的属性很少,因此JSON绑定器不会将任何内容绑定到它们。

如果您有要循环并获取的公共属性,请将这些属性声明为ViewModel,然后将其设置为列表对象中的参数。

public class BaseModel
{
public DateTime creation_date {get;set;}
}

然后你可以使用

public ActionResult Load(String session_id, List<BaseModel> data, Object metaData)
{     
...
}

如果你真的需要把它绑定到一个对象上,你可以尝试下面的链接:

将JSON转换为ExpandoObject

HTH-

Si

最新更新