3

我刚开始第一次做MVC项目,遇到了一个我真的没想到的问题:模型太多。

没有太多不同的型号,但有太多细微不同但几乎完全相同的型号。

我有一个相当复杂的页面,有几个组合框、一个详细对象列表和一些我需要跟踪的无关紧要的东西。视图中的信息比我返回的信息多(这很好)。

我有一个域模型,它始终保持不变。(1 个模型)

我有一个单一用途的视图模型,它是域模型和一些围绕它的额外信息。(1 个模型)

我有一个单次使用的表单模型,它是视图模型的副本,其中包含域模型的空壳副本,上面有验证内容。(2 款)

今天下午我需要更改一个属性的类型,并且我有三个不同的地方可以更改它。看来我的模型太多了,都是单人使用的。对于本应比经典 ASP.NET 容易得多的东西,它似乎做了很多工作。

我的问题是:我做得对吗?是否应该有多种模型,还是我遗漏了一些明显的东西?

4

1 回答 1

1

不完全确定您示例中的表单模型的用途 - 您是使用它来限制来自客户端的可发布字段还是使用它来映射到您的域?

在我自己的 MVC 网站中,我将拥有一个域模型(可能只是一个本地域或来自远程 WCF 服务),我将其一对一映射到我的个人 ViewModel 中,以便在屏幕上呈现并接收回传。这些还包含我的验证(无论是注释还是流利的等)。

然后,任何属性名称更改都将仅限于相关页面的 ViewModel 和域。

如果您处于在域模型之间复制属性的情况,那么某种基本视图模型结构将为您提供通用实体的良好服务,但总的来说,我个人认为这不是一个巨大的开销。

于 2013-04-12T09:24:05.930 回答