ASP.NET MVC 3控制器无法接收json 2D阵列

时间:2011-11-15 02:05:44

标签: json asp.net-mvc-3

不确定是否是错误。我按照一些教程将一个Json 2D数组发布到ASP.NET MVC控制器,当数组的第一个元素不为空时它工作正常,否则它会失败。

示例:如果我的json obj是

var obj = {
   ItemsArr: [[1, 2],[]]   // first element is an array with a few elements
};

控制器将正确接收数据。但是,如果2D数组的第一个元素是空数组,例如:

var obj = {
    ItemsArr: [[], [1, 2]]  // first element is an EMPTY array
};

控制器将收到空值。

我正在使用jquery.json-2.3.min.js将objs转换为json字符串。 转换后的字符串看起来很好:

{"ItemsArr":[[1,2],[]]}
{"ItemsArr":[[],[1,2]]}

型号代码:

public class Model
{
    public List<string[]> ItemsArr {get;set;}
}

public MyController : Controller
{
    public ActionResult DoSomething( Model model )
    {  ...
    }
}

有没有人遇到过这个问题?有什么想法解决它?

提前致谢!

===================================

编辑:

经过一番研究,如果我将空数组更改为null,则可以正常工作。

{"ItemsArr":[null,[1,2]]}

1 个答案:

答案 0 :(得分:0)

我建议传递一个对象数组并在服务器端创建一个具有相同属性的类,然后asp.net MVC将自动将此数组(在JS端)转换为列表(或任何其他IEnumerable)是行动签名的一部分。