Viewmodels和Models,如何拆分它们

时间:2010-06-01 14:06:41

标签: asp.net-mvc

我正在使用asp.net mvc 2,我不确定如何构建模型和视图模型。在nerddinner中,每个只有一个。

我每个实体只有1个viewmodel(?),然后每个表单修改视图有1个模型?所以viewmodel包含所有它需要的东西,例如:PagedFoo FooClass ...,FooClass,Foowithbunnies,FooClassStats ......?

/ M

3 个答案:

答案 0 :(得分:1)

我认为这是(域)模型对象代表您的业务实体。业务要求所要求的任何东西都去那里。

视图模型可以使视图尽可能简单。所以所有的显示逻辑,数据按摩等都在那里。

是的,有时候会有人渗透到另一个中(嘿,你在我的领域模型/巧克力中得到了你的View Model / Peanut Butter!),没关系。

但你的目标应该是让它们尽可能分开并保持清洁。这似乎导致了最易于使用且易于维护的代码。

答案 1 :(得分:0)

我通常有一个代表View的ViewModel。这是为了让视图尽可能地愚蠢。 所以,现在,这是一对一的关系。查看 - >视图模型, 但是我的ViewModel与我的Model

有一对多的关系

提取物 查看| ---- |视图模型 ViewModel | ---- |<模型

答案 2 :(得分:0)

我继承了一个应用程序,其中一个数据库表有大约60列。这表示在应用程序内的多个页面的过程中构建的持久类型。为了解决这个问题,我创建了大约8种不同的视图模型。

所以......以与SQL View表相同的方式思考ViewModels(如果隐喻有帮助的话)。 ViewModel是一种机制,用于帮助将持久类型的使用限制为对视图有用的内容。

另外,我强烈建议在使用ViewModel和Persistent Types之间的转换时使用AutoMapper,这样可以让ViewModel处理更自然。