我有一种List<List<int>>
,我正在尝试让 MVC3 中的模型绑定器解析并失败。 我的控制器将该类型作为参数,当我像这样发送完全填充的列表时,它可以工作。
有效、正确解析/绑定的数据
[ [ 22, 12, 9 ], [1, 2, 3], [5] ]
一旦我将相同的数据结构发送到控制器,但这次使用空数组,它就会停止解析外部集合。 以下是活页夹阻塞的一些数据:
有效、解析/绑定不正确的数据
[ [ 4, 5], [], [6, 7] ]
该值绑定到一个List<List<int>>
,但它的长度为 1,第一项是 List<int>
4, 5
那么,当某些List<int>
是空列表时,如何让模型绑定器接受List<List<int>>
呢? 我需要上面显示的"有效、未正确解析/绑定"数据才能工作。
更糟糕的是,ModelState
中没有绑定错误!
如果这很重要,这也会作为 JSON 发送到控制器(通过 application/json
(。 我想如果这是一个错误,它很可能特定于该 json 模型绑定器。
这必须只是模型绑定器中的实现细节或实现错误。 如果您传递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
绝对是一个空列表,您可以访问其计数等。
此外,MVC 中的默认 Json 序列化程序会将该列表序列化为
[ [ 4, 5], [], [6, 7] ]
而不是
[ [ 4, 5], null, [6, 7] ]
乐趣。