asp.net-mvc - 如何使用 IoC、DI 和 MVC 连接 View 模型上的列表/集合?

标签 asp.net-mvc dependency-injection inversion-of-control

我正在处理一个 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):

http://www.dominicpettifer.co.uk/Blog/39/dependency-injection-in-asp-net-mvc-2---part-2--modelbinders-viewmodels

这是我需要的吗?这可以与 Unity 一起使用吗(我看到这里的示例使用温莎城堡)?

最佳答案

与其他应用程序边界数据结构一样,ViewModel 最好建模为具有一些行为的数据结构。 Controller 的职责加载数据并填充 ViewModel

因此,您应该将必要的服务注入(inject) Controller 并使用这些服务来填充 ViewModel。

关于asp.net-mvc - 如何使用 IoC、DI 和 MVC 连接 View 模型上的列表/集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941618/

相关文章:

c# - 无法在mvc项目中以所需格式呈现数据

javascript - 如果启用了 javascript,如何执行 Ajax 请求,否则,请求将通过 POSTBACK?

c# - HtmlSanitizer + 带有 DI 的 ASP.NET Core 2

Java Refactor 导致循环引用

asp.net-mvc - 带有 ioc 的 asp.net mvc --> 使用 BaseController 避免构造函数汤

jquery - 从 jquery 脚本调用操作 Controller 后 View 未加载

c# - 注释复杂类型时远程验证失败

c# - 我应该使用 Singleton 还是 Scoped 服务在 ASP.NET Core 中进行 api 调用?

java - Zk Spring CustomComponent 引用 bean

c# - 顶级类(主要)中的依赖倒置