我正在用MVC 3构建一个概念应用程序,试图了解它的方法.我以前在WebForms中使用n层方法完成了一些非常重要的应用程序,通常由存储的存储库和服务的域对象组成,以便在存储之前对它们进行操作.
我试图调和我以前用"正确"方式做事的方式在MVC中做这些事情,如果有这样的话.我现在要挂起的东西是何时使用ViewModels与何时使用我在其他项目中的域对象.验证是通过ViewModels完成的,但是当我编写更多自定义的业务逻辑验证时,似乎它对于一个低级的ViewModel负有太大的责任,它只是帮助我移动数据,然后通过存储库层将其正式存储在数据库中.
我也厌倦了将ViewModel数据映射到存储库存储和检索的"官方"域对象,但我觉得我不应该使用MVC属性来破坏我的域对象以进行验证.
对于在域对象和纯粹的ViewModel之间绘制线的位置,您有什么建议吗?或者我是否使事情变得复杂,我的ViewModel实际上应该是存储库存储的"官方"模型?
Dar*_*rov 15
对于在域对象和纯粹的ViewModel之间绘制线的位置,您有什么建议吗?
我个人总是使用View Models.所有UI验证逻辑都在视图模型(必填字段,...)和域模型上的业务逻辑(用户名已存在,...)上完成.我还使用AutoMapper,以免厌倦了域模型和传递给视图的视图模型之间的映射.
我认为最好的方法是始终使用视图模型.这些是关于表示问题,应该是处理基本输入验证的地方.域对象不适合这种情况.
我在每个视图中使用特定的视图模型,并且只包含视图中所需的信息 - 保持视图模型完全以视图为中心,使得视图更加干净.
您可以使用Automapper帮助消除在视图和域模型之间移动的苦差事.
我可以推荐ASP.NET MVC 2 in Action作为强大的ASP.NET MVC模式的好书.这包括详细使用Automapper.
我通常默认使用View Models,但是对于只读视图,我已经知道使用域模型(如果我只想从中读取数据,没有理由经历映射的开销).
如果您决定使用域模型,我永远不会让MVC直接绑定到它们,因为如果有人足够了解您的域,他们可以发布绑定到您不希望用户能够编辑的属性的值.您可以定义粘合剂可以和不能绑定的属性的白色和黑色列表,但是利用它是您必须维护的其他东西以及容易被遗忘的东西.
| 归档时间: |
|
| 查看次数: |
3020 次 |
| 最近记录: |