2013-03-21 44 views
3

我刚开始第一次使用MVC项目,而且遇到了一个我并不期待的问题:太多的模型。我是否在MVC ASP.NET中不必要地复制模型?

没有太多不同的型号,但太多了,它们略有不同,但几乎完全一样。

我有一个相当复杂的页面,有几个组合框,明细对象的列表,我需要跟踪的其他某种外在无关的事情。更多的信息进入视图比我回来(这很好)。

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

我有一个单一的使用视图模型,这是域模型和一些额外的信息包裹它。 (1个模型)

我有一个单次使用形式模型,它是视图模型的与它里面的域模型的一个空壳拷贝与它验证东西的副本。 (2款)

我需要今天下午更改属性的类型,我有三个不同的地方去改变它。它似乎我有太多的车型,其是一次性使用。对于那些应该比传统ASP.NET更容易的东西似乎有很多工作。

我的问题是:我做对了吗?应该有很多模型,还是我错过了一些明显的东西?

+0

有人打算发表意见吗? – Jonathan 2013-04-10 07:18:55

+1

对,我完全理解你。我有同样的问题,我没有真正解决它,但我试图使用常识。我会尽可能地(重新)使用域模型。如果我需要添加一些“额外信息”,具体取决于它们的大小,我将使用ViewBag或ViewModel。在创建表单模型之前,我会尝试重新使用视图模型。但是,是的,你想要遵循所有不错的模式,那么你需要三种模式。 – 2013-04-12 10:39:27

回答

1

不能完全确定是什么在你的榜样的形式模型是 - 你使用限制来自客户端的能力后场或者使用以映射到您的域名?

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

任何属性名称的变化将被限制在相关页面的ViewModel和域中。

如果您处于在域模型之间复制属性的情况,那么某种基本视图模型结构可以很好地为普通实体提供服务,但总体上它并不是我个人认为的大规模开销。