ASP.NET MVC、Model 和 ViewModel 关注点分离?
-
05-07-2019 - |
题
最近,我一直在探索当底层模型很复杂时组织 ASP.NET MVC 应用程序的表示层的最佳方法是什么。到现在为止出现的是 MVVM 架构及其 ViewModel 对象。但是,我不确定这种架构的最佳实践是什么。
- ViewModel 对象可以包含 Model 对象吗?
- 如果使用MVVM,是否建议在视图上使用模型对象?
- 应该在 ViewModel 或 Model 类上的哪里实现验证?
- 业务层(服务层)是否应该了解 ViewModel ,以及谁负责 ViewModel 和 Model 之间的映射?
解决方案
- 大多数时候,当我们需要发送多种类型的模型对象时,或者当我们需要传递仅在视图中需要的更多属性时,ModelView 对象只是保存模型对象的容器。
- 如果视图的工作是显示模型的详细信息,并且没有其他内容可以传递给视图,为什么不呢?
- 依靠。您可以使用 ModelView 和 Model 类在层之间传输数据。并通过自定义模型绑定器或服务层进行验证。
- 他们没有理由不了解 ModelView。但通常您只需从控制器的服务层获取请求的模型,然后将其直接或在模型视图中传递给视图。
顺便说一句,我不会将 ModelViews 视为一种架构。这更像是“需要时使用一个”。毕竟,这样做将数据传递给 view 是没有意义的:
class SomeModelView {
public MyModel model { get; set; }
}
只需通过 MyModel
如果这足以让视图完成其工作。
不隶属于 StackOverflow