视图模型应该包含静态功能方法吗?
Should viewmodels contain static functional methods?
如果我有一个旨在为视图服务的视图模型 -
像这样向视图模型添加一堆静态方法是一个好习惯吗
- 通过使用数据库中的数据获取项目列表(viewmodel 对象)?
- 在视图模型中使用 属性 更新数据库?
我正在使用 .NET MVC,感觉我的视图模型被一堆静态函数和更新方法搞得乱七八糟。
为视图创建视图模型的主要原因是视图开始包含许多功能,必须从各处获取信息。因此,我决定创建一个视图模型,通过一次调用从一个地方获取信息。
我是否遵循了良好的编码模式?还是我在黑暗中拍摄?
Is it a good practice to add bunch of static methods to the viewmodel
否,您的视图模型应该只是一个 POCO,包含尽可能少(如果不是零)的业务逻辑。视图模型的唯一工作是将数据从控制器移动到视图。
一般:
- 控制器应该从某处
获取模型实例
- 这可以直接被视图使用,或者如果多个模型需要
需要组合或额外信息(不在模型本身中)
然后可以创建视图模型。
- 理想情况下,视图模型应该在控制器之外创建
(保持控制器工作清洁),这可以简单地通过
使用 工厂模式
如果您阅读了 MVC 模式的 wikipedia page。您会注意到它专为数据呈现而不是业务逻辑而设计:
Model–view–controller (MVC) is a software architectural pattern for
implementing user interfaces.
所以真的 none MVC 对象(模型、视图或控制器)应该包含业务逻辑。 MVC 模式的工作是呈现数据(句号)
综上所述,将简单的业务逻辑放入控制器是很常见的。但是,一旦网站变得更加复杂,就应该避免这种情况,以免造成 god object
Am I following a good coding pattern here?
不,这不是一个好的模式。
The main reason behind creating viewmodel for the views was because the views started to contain a lot of functionalities for which info had to be fetched from all over the place. So instead, i decided to create a viewmodel to get the info from one place with one call.
存储功能或任何类型的逻辑不是 ViewModel 的目的。它应该只是一种传输机制,用于保存在 View 和 Controller 之间传输的数据。
考虑将您的 "funcionalities" 移动到应用程序、服务或其他对您的应用程序架构有意义的层。
如果我有一个旨在为视图服务的视图模型 -
像这样向视图模型添加一堆静态方法是一个好习惯吗 - 通过使用数据库中的数据获取项目列表(viewmodel 对象)? - 在视图模型中使用 属性 更新数据库?
我正在使用 .NET MVC,感觉我的视图模型被一堆静态函数和更新方法搞得乱七八糟。
为视图创建视图模型的主要原因是视图开始包含许多功能,必须从各处获取信息。因此,我决定创建一个视图模型,通过一次调用从一个地方获取信息。
我是否遵循了良好的编码模式?还是我在黑暗中拍摄?
Is it a good practice to add bunch of static methods to the viewmodel
否,您的视图模型应该只是一个 POCO,包含尽可能少(如果不是零)的业务逻辑。视图模型的唯一工作是将数据从控制器移动到视图。
一般:
- 控制器应该从某处 获取模型实例
- 这可以直接被视图使用,或者如果多个模型需要 需要组合或额外信息(不在模型本身中) 然后可以创建视图模型。
- 理想情况下,视图模型应该在控制器之外创建 (保持控制器工作清洁),这可以简单地通过 使用 工厂模式
如果您阅读了 MVC 模式的 wikipedia page。您会注意到它专为数据呈现而不是业务逻辑而设计:
Model–view–controller (MVC) is a software architectural pattern for implementing user interfaces.
所以真的 none MVC 对象(模型、视图或控制器)应该包含业务逻辑。 MVC 模式的工作是呈现数据(句号)
综上所述,将简单的业务逻辑放入控制器是很常见的。但是,一旦网站变得更加复杂,就应该避免这种情况,以免造成 god object
Am I following a good coding pattern here?
不,这不是一个好的模式。
The main reason behind creating viewmodel for the views was because the views started to contain a lot of functionalities for which info had to be fetched from all over the place. So instead, i decided to create a viewmodel to get the info from one place with one call.
存储功能或任何类型的逻辑不是 ViewModel 的目的。它应该只是一种传输机制,用于保存在 View 和 Controller 之间传输的数据。
考虑将您的 "funcionalities" 移动到应用程序、服务或其他对您的应用程序架构有意义的层。