viewmodels应该包含静态函数方法吗?

Jan*_*hal 6 c# model-view-controller asp.net-mvc design-patterns software-design

如果我有一个旨在用于视图目的的Viewmodel -

向viewmodel添加一堆静态方法是一个好习惯 - 通过使用db中的数据获取项目列表(viewmodel对象)? - 使用viewmodel中的属性更新数据库?

我正在使用.NET MVC,感觉我的viewmodels混乱了大量的静态函数和更新方法.

为视图创建viewmodel背后的主要原因是因为视图开始包含许多功能,因此必须从所有地方获取信息.因此,我决定创建一个viewmodel,通过一次调用从一个地方获取信息.

我在这里遵循一个好的编码模式吗?还是我在黑暗中拍摄?

Lia*_*iam 7

向viewmodel添加一堆静态方法是一种很好的做法

,您的viewmodel应该只是一个POCO,包含很少(如果不是零)业务逻辑.视图模型的唯一作用是将数据从控制器移动到视图.

通常:

  • 控制器应该从某个地方获取模型的实例
  • 这可以直接由视图使用,或者如果需要组合或额外信息(不在模型本身中)的多个模型,则可以创建视图模型.
  • 理想情况下,视图模型应该在控制器外部创建(保持控制器工作清洁),这可以通过使用工厂模式来实现

如果您阅读MVC模式的维基百科页面.您会注意到它仅用于数据表示,而不是业务逻辑:

模型 - 视图 - 控制器(MVC)是用于实现用户界面的软件架构模式.

所以MVC对象(模型,视图或控制器)都不应该包含业务逻辑.MVC模式的工作是渲染数据(句号)


这一切都表示将简单的业务逻辑放入控制器是很常见的.但是,一旦网站变得更加复杂,就应该避免这种情况,因为害怕创建一个神对象