gpt4 book ai didi

c# - MVC3 - 引用哪个模块中的单独服务项目?

转载 作者:行者123 更新时间:2023-11-30 20:03:56 24 4
gpt4 key购买 nike

初始情况:

我想构建一个具有分层架构的 MVC3 应用程序。这些层将是持久性层(存储库模式)、服务层和 View 层。我还想将实体映射到持久层,并将这些 DTO 传递给 View 。

在 View 中,我想通过使用 MVC3 weapp 来应用 MVC 模式。现在我的问题是,我应该在哪个模块、 Controller 或模型中访问(引用)服务层。我总是在 Controller 中看到对服务层的引用,如下所示:

public class CustomerController
{
public ViewResult Details( int id )
{
CustomerDTO customerDto = MyService.GetCustomerById();
return View( customerDto );
}
}

我不应该访问模型模块中的服务层吗?如果我在 Controller 中访问我的服务层,我根本不需要模型模块......?

最佳答案

我的工作基础是服务层的任何实际工作都在 Controller 中完成。

If I access my service layer in the controllers, I don't need the Model module at all...?

不正确 - 您的服务类型极不可能,甚至应该具有正确的形状和元数据(例如[Display][DataType] 属性)或使它们与 MVC View 一起正常工作。您应该为所有提供给 View 的对象创建一个模型类型,即使它们是您的服务类型的一对一克隆——因为这样您就可以将 View 和 Controller 所需的数据与您的服务分开类型。

如果您尝试将您的 View 直接绑定(bind)到您的服务类型,那么您将创建以下两种情况之一:

  • 使更改 View 和 Controller 代码变得更加困难,因为来回发送的数据必须符合服务类型
  • 让改变服务类型变得更加困难,因为这样做意味着改变每一个观点

ViewModel(或 Model,取决于您的观点)是适合查看(在网页上显示)和绑定(bind)(从一个网页)- 这两种情况通常会偏离业务逻辑级别使用的实际服务类型。事实上,它们应该,因为它们旨在解决不同的问题。

关于c# - MVC3 - 引用哪个模块中的单独服务项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com