如果我的Viewmodel设计用于视图目的 -
将一堆静态方法添加到viewmodel就好了 - 通过使用db中的数据获取项目列表(viewmodel对象)? - 使用viewmodel中的属性更新数据库?
我正在使用.NET MVC,感觉我的视图模型混杂了许多静态函数和更新方法。
为视图创建视图模型背后的主要原因是视图开始包含许多功能,必须从所有地方获取信息。因此,我决定创建一个viewmodel,通过一次调用从一个地方获取信息。
我是否遵循良好的编码模式?还是我在黑暗中拍摄?
答案 0 :(得分:7)
向viewmodel
添加一堆静态方法是一种好习惯
否,您的viewmodel应该只是一个http://i.stack.imgur.com/gR8HM.png,包含很少(如果不是零)业务逻辑。视图模型的唯一作用是将数据从控制器移动到视图。
如果您阅读MVC模式的factory pattern 。您会注意到它仅用于呈现数据,而不是业务逻辑:
模型 - 视图 - 控制器(MVC)是一种软件架构模式 实施用户界面。
所以MVC对象(模型,视图或控制器)都不应该包含业务逻辑。 MVC模式的工作是呈现数据(句号)
所有人都说将简单的业务逻辑放入控制器是很常见的。但是,一旦网站变得更加复杂,就应该避免这种情况,因为担心会创建wikipedia page
答案 1 :(得分:1)
我是否遵循良好的编码模式?
不,这不是一个好的模式。
为视图创建视图模型背后的主要原因是视图开始包含许多功能,必须从所有地方获取信息。因此,我决定创建一个viewmodel,通过一次调用从一个地方获取信息。
存储功能或任何类型的逻辑不是ViewModel的目的。它应该只是一种传输机制,用于保存在View和Controller之间传输的数据。
考虑将您的“功能”移动到应用程序,服务或其他对您的应用程序架构有意义的层。