将JSON对象(数组)发布到MVC3 Controller

时间:2012-10-15 02:47:05

标签: jquery asp.net json asp.net-mvc-3

  

可能重复:
  Post an Array of Objects via JSON to ASP.Net MVC3

我正在尝试将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
}

] }

1 个答案:

答案 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