DefaultModelBinder:IList与List

时间:2009-09-24 20:15:58

标签: asp.net-mvc generics defaultmodelbinder

我不确定这是一个错误还是一个功能。我有一个动作参数,它使ListRequest对象具有一些字符串属性。 .NET MVC尽职地将查询字符串params映射到ListRequest对象的属性。

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

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

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

1 个答案:

答案 0 :(得分:0)

听起来像是我的一个特色。模型绑定器需要绑定的具体类型。

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

编辑:有趣

根据源代码判断,它似乎将绑定到一个模型,该模型是IEnumerable,ICollection,IList或IDictionary的泛型类型,但它不会绑定在泛型类型的模型属性上。

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