我正在处理一个 MVC 项目,尝试实现 IoC 和 DI。这两个对我来说都是相当新的,所以如果我完全走错了路,或者如果我的问题措辞不清楚,我提前道歉。
假设我有一个需要显示地址表单的 View ,其中一个元素是状态下拉列表。 (我意识到在其他内容的上下文之外的地址不太可能,但为了简单起见,假设这里就是这种情况。)
假设这是我的 View 模型:
public class AddressList {
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public List<string> States { get; set; }
public string Zip { get; set; }
}
谁有责任填充州列表?
Controller 是否应该执行此操作,并已将服务注入(inject)其中以获取状态?如果是这样,我的每个需要填充地址的 Controller 中是否都会有相同的注入(inject)和填充逻辑?还是应该去其他地方?
这个 View 模型属于哪一层?如果此 View 模型非常特定于我的应用程序中的给定 View ,那么它是否也应该保留在我的应用程序中,因此不用于传递到用于填充状态的服务?
我已经搜索了几个小时,试图找到这样做的好例子,但发现的帮助很少。所以我想知道这是否是一个错误的方法。如果是这样,我当然愿意采取不同的方式。
我目前正在使用 ASP.NET MVC2、Unity 和 EF4,因此任何使用这些的示例都很棒。然而,任何例子都可能引导我走向正确的方向。
提前致谢。
编辑:抱歉,但我想我可能只是偶然发现了我正在寻找的东西——模型绑定(bind):
这是我需要的吗?这可以与 Unity 一起使用吗(我看到这里的示例使用温莎城堡)?
最佳答案
与其他应用程序边界数据结构一样,ViewModel 最好建模为具有一些行为的数据结构。 Controller 的职责是加载数据并填充 ViewModel。
因此,您应该将必要的服务注入(inject) Controller 并使用这些服务来填充 ViewModel。
关于asp.net-mvc - 如何使用 IoC、DI 和 MVC 连接 View 模型上的列表/集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941618/