【发布时间】:2021-04-05 09:35:40
【问题描述】:
我的 Controller 的 HttpPost 方法都以 ViewModels 作为参数。 显然 ViewModel 需要一个无参数的构造函数。
我还需要通过参数化构造函数将我的 DbContext 服务注入到我的 ViewModel 中。
其他人是如何处理这种看似不可能的情况的?
【问题讨论】:
-
您的问题似乎与这个问题有关:stackoverflow.com/questions/45775740/…。但我认为,如果您需要将 DbContext 注入 ViewModel,那么您的 VM 做得太多了。
-
我猜你是在建议从其他可以注入 dbcontext 的类中填充 ViewModel?谢谢。
-
是的,我会在业务逻辑类/服务中填充 VM 并将其返回给控制器;或者如果有必要,直接在 Controller 中(如果代码不多,我尽量让我的控制器很薄)
-
ViewModel在 asp.net 中与ViewModel在其他一些模式中有些不同(例如:MVVM在 wpf 中使用)。这里的ViewModel主要只包含数据,以便View(Razor 视图/页面)可以用来呈现 HTML 内容。反过来(处理从客户端发送的请求),VM 将成为您获取客户端发送的数据的地方(在 ASP.NET/core 框架的帮助下,为您执行称为model binding的预处理)。客户端-服务器方式要求 VM 具有无参数构造函数,而另一种方式则没有。我们通常为两种方式使用同一个虚拟机。
标签: asp.net-core dependency-injection asp.net-core-mvc viewmodel