0

我不确定这是错误还是功能。我有一个带有一些字符串属性的 ListRequest 对象的操作参数。.NET MVC 尽职尽责地将同名的查询字符串参数映射到 ListRequest 对象的属性。

我添加了一个 ListRequest.Filters 属性,它是从查询字符串中获取的字符串列表: ?filter=foo&filter=bar

如果我将 .Filters 声明为 List(Of String) 类型的 Get/Set,DefaultModelBinder 将完全符合您的预期。但是,如果我将 .Filters 声明为 IList(Of String) 的 Get/Set,则 DefaultModelBinder 会完全停止将值绑定到该属性。

这是一个功能,还是一个错误?

4

1 回答 1

0

对我来说听起来像是一个功能。模型绑定器需要绑定到具体类型。

如果你告诉它绑定到一个接口,它就不能做任何事情,因为它不能实例化一个要绑定的接口。

编辑:有趣

从源代码来看,它似乎会绑定到 IEnumerable、ICollection、IList 或 IDictionary 的泛型类型的模型,但它不会绑定到泛型类型的模型属性上。

所以我不会说这是一个错误......我只是说这是他们忽略的一个功能。:-)

于 2009-09-24T20:20:08.697 回答