【问题标题】:Clean Architecture - In ASP.NET MVC - Which layer I use to write the ViewModels?清洁架构 - 在 ASP.NET MVC 中 - 我使用哪一层来编写 ViewModel?
【发布时间】:2020-01-07 03:49:54
【问题描述】:

问题很简单,

我正在使用 ASP.NET MVC 为项目(网站)使用 Clean Architecture。我从 GitHub 下载了Ardalis 编写的 Clean Architecture 模板示例代码。

在那个特定的模板中,作者没有使用视图模型。

是否有人对使用 Clean Architecture 和 viewmodel for ASP.NET MVC 等的模板有任何参考,或者知道在哪里放置(分层)视图模型。

【问题讨论】:

  • 视图模型特定于 UI,因此它们可以驻留在 Web 项目中
  • 但是 Web API 项目也使用相同的视图模型。
  • Viewmodels 属于 UI 层。在 WebAPI 的上下文中,我们使用并返回 DTO。阅读有关干净架构的官方文档。 docs.microsoft.com/en-us/dotnet/architecture/…

标签: c# asp.net-mvc architecture clean-architecture ardalis-cleanarchitecture


【解决方案1】:

我是相关 CleanArchitecture 模板的作者

最新版本使用带有视图的 ViewModel 类作为多个选项之一(其他选项是 Razor 页面、带有控制器的 API 和带有 API 端点的 API)。通常,在使用 ViewModel 类时,通常的约定是将它们放入 Web 项目根目录中的 ViewModels 文件夹中。

这会将它们放置在 Views 文件夹附近,因此它们很容易找到(对于与 API 控制器一起使用的 API 模型,它们通常被放置在 ApiModels 文件夹中,该文件夹在这些情况下通常使用的 API 和/或 Controllers 文件夹附近排序)。

值得一提的是,如果您使用 Razor Pages,这个问题就会消失,因为模型链接到该方法中的“视图”(页面)。

同样对于 API,如果您采用 API Endpoints 方法(我也是其作者的另一个开源包),用于每个端点的请求和响应模型通常也链接到那里的 Endpoint 类。

【讨论】:

  • 感谢您的详细回答。现在我清楚地明白 ViewModel 文件夹应该始终在 Web 项目中或靠近视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2021-05-23
  • 2018-04-24
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
相关资源
最近更新 更多