最近,我一直在探索当底层模型很复杂时组织 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 如果这足以让视图完成其工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top