在Asp.net MVC中,视图模型是否可以从域模型派生?

erg*_*g39 9 c# model-view-controller asp.net-mvc

(我使用的是ASP.Net MVC,但这似乎是一个更通用的MVC问题)

假设您有一个代表一个人的域模型,并且您有一个编辑人物的视图.Person域对象中包含State of residence属性,在视图中您需要一个列出状态的下拉列表.

是否有任何理由不创建从域模型派生的视图模型,只包含视图所需的UI特性的属性?如果是这样,为什么不想这样做呢?

TIA

Fir*_*den 7

这不是推荐的做法,因为您要求不要这样做.简短的回答是为您要渲染的每个视图创建一个独特的视图模型.维护视图模型关系的1-1视图,当您编码时,您将看到原因.

很长的答案可以在这里找到其他地方http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx

谢谢,

[R


kbr*_*ton 6

我认为从域模型中导出视图模型会引入MVC旨在避免的耦合; 然而,那就是说,做对你的应用最有意义的事情.

我更喜欢将视图模型分开,因为这样做可以让我自由地大幅改变域模型并获得改进的编译时支持,将我的视图模型重新映射到新的域模型.

  • "域模型会引入MVC旨在避免的耦合"这句话根本不是真的.Django/RoR实现,其中视图模型实际上是数据库模式的紧密耦合表示.MVC没有对你的模型应该是什么意见,只是它不是你的V和C的一部分. (3认同)