2

假设在我的 ASP.NET MVC 项目中,我有一个 ViewModel 用于编辑产品的表单。在许多其他字段中,我有一个产品类型列表,我希望用户能够从下拉列表中进行选择。

当我将域对象映射到 ViewModel 时,我正在调用服务来获取域对象,然后使用 AutoMapper 将其映射到 ViewModel。为了填写该产品类型列表的下拉列表,我调用了另一个服务,该服务从数据库中获取该数据并使用它来填充我的 ViewModel 上的另一个属性。

我正在努力解决的是,在控制器中显式调用该辅助服务是否更好,而不是可能将该调用放入自定义 ValueResolver 类并配置我的映射以使用它。

我喜欢从我的控制器中删除对产品类型服务的依赖的前景(因为其中有很多,并且控制器最终会产生很多依赖),但我担心放置这种逻辑(其中可以访问数据库)进入 ValueResolver 是对 ValueResolver 的不当使用,并且可能违反我所说的最小意外原则。(即,我可能不希望映射代码会导致数据库请求。)

这是使用 ValueResolver 的常见问题吗?

4

1 回答 1

1

Jimmy BogardAutoMapper 邮件列表中回答:

是的,这绝对不是罕见的。下拉列表数据源......伙计,它们是我们 ViewModel 世界中最难弄清楚的事情。

请记住,您需要担心 POST 场景、重新填写验证失败的信息等。

于 2013-01-02T21:29:17.863 回答