ViewModels应该保留在UI层还是将其移动到另一层?

时间:2014-06-20 15:52:50

标签: asp.net-mvc

我有UI层(使用ASP.NET MVC),BLL层,DAL层和模型层。模型层有POCO类,表示数据库中的表。

UI,BLL和DAL图层都有对模型图层的引用。

在UI层中,我经常使用Model层中的POCO类来显示用户。但是当用户可以使用表单执行某些操作时,我经常使用验证属性创建ViewModels。

我应该将ViewModel放在UI图层中还是将ViewModels移动到模型图层?

3 个答案:

答案 0 :(得分:3)

这实际上是一个偏好问题,但我更喜欢将我的Model类(映射到数据库)与ViewModel分开。这样我就不会对映射到数据库的内容以及没有映射到底的内容感到困惑。

答案 1 :(得分:0)

我个人在不同的项目中创建我的视图模型,并将它们包含在需要访问它们的所需图层中。这样我就可以在其他项目中重用viewmodels。

我的项目设置通常如下:

MVC项目(UI)
MVC ViewModels(UI /服务层) 服务层+逻辑层(存储库) 数据库模型(ORM(Telerik DataAccess)层)

这样我就可以隐藏服务层后面的所有数据库模型,只传递UI和服务层之间的视图模型。

但这就是我喜欢的工作方式。我相信还有其他人可能不同意我的项目设置,但这对我来说似乎是合乎逻辑的。

这真的取决于你的需求。如果您发现要将数据库模型转换为UI层中的视图模型,那么我建议将它们移出,以便您可以在服务层中进行所有这些转换。

答案 2 :(得分:0)

我将视图模型作为UI背后数据的翻译。我为每个页面创建了一个视图模型,因此该页面中的所有控件都有一些要绑定的东西。对我来说,使用各自的视图模型对页面进行分组是有意义的。它看起来像这样:

Project folders

甚至更好,使用NestIn之类的工具嵌套视图和视图模型文件:

Project folders