我有一种List<List<int>>
,我试图让MVC3中的模型绑定器解析并失败。我的控制器将该类型作为参数,当我发送完全填充的列表时,它可以工作。
有效,正确解析/绑定数据
[ [ 22, 12, 9 ], [1, 2, 3], [5] ]
只要我将相同的数据结构发送到控制器,但这次使用空数组,它就会停止解析外部集合。下面是粘合剂扼杀的一些数据:
有效,不正确地解析/绑定数据
[ [ 4, 5], [], [6, 7] ]
该值与List<List<int>>
绑定,但长度为1,第一项为List<int>
的{{1}}
那么,当某些4, 5
是空列表时,如何让模型绑定器接受List<List<int>>
?我需要上面显示的“有效,不正确解析/绑定”数据才能工作。
更糟糕的是List<int>
中没有绑定错误!
如果重要的话,这也是作为JSON发送给控制器的(通过ModelState
)。我想如果这是一个bug,它可能特定于那个json模型绑定器。
答案 0 :(得分:0)
这必须只是模型绑定器中的实现细节或实现错误。如果您为空null
传递[]
而不是List<int>
,则可以正常使用。
此解决方法的一个奇怪细节是null
值转换为空List<int>
!
如果你发送
[ [ 4, 5], null, [6, 7] ]
然后List<List<int>>
中的项目将是:
[0] = List<int> {4, 5}
[1] = List<int> {}
[2] = List<int> {6, 7}
我仔细检查过,索引1
肯定是一个空列表,你可以访问它的Count等。
此外,MVC中的默认Json序列化程序会将该列表序列化为
[ [ 4, 5], [], [6, 7] ]
而不是
[ [ 4, 5], null, [6, 7] ]
趣味。