MVC - 自定义模型绑定器和IoC有什么区别?

时间:2013-09-22 12:10:09

标签: .net asp.net-mvc asp.net-mvc-4 inversion-of-control

抱歉,如果这是一个愚蠢的问题 - 我正在阅读一本MVC 4书,我已经掌握了IoC和ninject,以及现在的自定义模型绑定。 问题是: 如果两者都用于在运行时实例化参数,那么一个和另一个之间的真正区别是什么;我在这里想念的是什么? 谢谢:))

2 个答案:

答案 0 :(得分:2)

对象创建不是模型绑定器的主要目的。实际上,使用IoC容器创建必要对象的模型绑定器没有任何问题。

模型绑定器的目的是将FormsCollection数据(一组名称/值数据对)转换为填充了字段的对象。

IoC容器不执行任何转换。它只会创建您要创建的内容。

所以这里是关于每种方法如何运作的简短对话:

“嘿,ModelBinder ..这里有一堆数据,弄清楚该怎么办” “Righto!看起来我需要一个新的LoginModel,让我以某种方式创建一个,通过Activator或IoC Container,然后用与我给出的数据匹配的值填充它。”

而IoC容器更像是:

“嘿,IoC容器,我需要一个实现IDatabase的对象” “对了!我通过我的配置中的映射看到一个IDatabase接口被映射到一个DatabaseInstance对象,所以我只为你准备一个新的,然后你就去了”

答案 1 :(得分:1)

Binders是客户端用户输入和服务器处理之间的桥梁。 Binders让你的工作水平高于http输入。绑定对象只携带数据。

另一方面,IoC容器实例化服务器端服务 - 执行某些操作而不是创建数据而与用户输入无关的对象。