【发布时间】:2011-12-30 15:41:24
【问题描述】:
我在 Asp.Net MVC 3 中使用 IoC 容器进行依赖注入,在我开始在控制器中编写 Action 方法之前,一切似乎都很完美。在操作方法中创建实体/模型对象的最佳方法是什么?有时模型是从某个存储库或服务中检索到的,这些存储库或服务通过构造函数注入到控制器中,但系统中的许多其他模型对象并非如此。
【问题讨论】:
-
你能告诉我们更多细节吗?如果某些模型对象不是来自存储库或服务,那么它们来自哪里?如果你正在创建新的模型对象,你可以注入一个模型工厂/构建器作为依赖..
-
实际上有一个控制器,它有几个步骤,如果不是所有的动作,大多数(如果不是所有的话)都会生成具有不同模型的不同视图并设置为视图模型。 HtmlHelper 需要一个空对象集作为模型来使用它的扩展方法来显示一个表单来接受数据,并且这个视图的视图模型具有某些特定实体类型的属性,比如
SiteSettings类。我不确定如何从 Action 方法中解决 ViewModel 及其依赖关系。 -
我认为您提出的原始问题与您可能打算提出的问题不同。这个问题是关于如何使用 IOC 容器来解析动作中的对象。您真正的问题听起来可能是“如何在 ASP.NET MVC 中创建向导?”,我不认为正确的答案是在操作方法中使用 IOC 容器。如果您提出新问题,您可能会得到更好的解决方案。
-
@PaulStovell 实际上,我在 IoC 方面遇到了一些问题。我想要的是,有一个简单的 Action 方法,它只创建一个具有设置类作为属性的视图模型。我想,我会将这些视图模型和其他实体(如
Settings)与其他实体一起注册到 IoC,它会为我创建它,这就是我所做的。从下面的答案之一,我认为我做错了。那么,这些仅由控制器的一种或两种方法使用的视图模型和简单的支持类可以直接使用new创建吗?而且我不是在寻求帮助来创建向导!
标签: c# asp.net-mvc dependency-injection inversion-of-control