C# 在MVC6中创建控制器时,实际会发生什么?

C# 在MVC6中创建控制器时,实际会发生什么?,c#,dependency-injection,architecture,asp.net-core-mvc,C#,Dependency Injection,Architecture,Asp.net Core Mvc,当我尝试制作一个MVC6应用程序时,我想到了在我的站点上放置一个ViewModel层。所以我想通过这样的服务来实现: public void ConfigureServices(IServiceCollection services) { services.AddViewModels(); } public IActionResult Detail([FromService]ArticleDetailViewModel vm) { return View(vm); } 所以我

当我尝试制作一个MVC6应用程序时,我想到了在我的站点上放置一个
ViewModel
层。所以我想通过这样的服务来实现:

public void ConfigureServices(IServiceCollection services)
{
    services.AddViewModels();
}
public IActionResult Detail([FromService]ArticleDetailViewModel vm)
{
    return View(vm);
}
所以我得到了一个对应模型的视图,用法如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddViewModels();
}
public IActionResult Detail([FromService]ArticleDetailViewModel vm)
{
    return View(vm);
}
ArticleDetailViewModel
应该像其他服务项目一样由工厂自动生成。但我认为将我所有的ViewModels添加到服务提供商不是一个好方法

接下来是一个问题: 我怎样才能做到这一点

我知道控制器是由每个请求的
DefaultControllerFactory
创建的。但我不知道工厂何时注册到服务,以及请求如何调用创建方法

或者我走错了路?
非常感谢。

让查看由DI容器构建的模型是一个非常糟糕的主意。视图模型是DTO,不应包含依赖项。在这种特殊情况下,我想将我的逻辑划分为不同的视图模型,以防止出现一个大型且不可维护的控制器,这个视图模型不仅仅是一个类似于DTO的视图模型。这个想法正确吗?或者有更好的做法吗?保持控制器精简很好,但也应该将数据和行为分开。视图模型包含数据,而控制器和服务包含行为。也许我应该添加一些类,比如managers来保存我的业务逻辑。但让我们回过头来谈谈,工厂何时注册到服务,请求如何调用创建方法?你能提供一些线索吗?无论如何,谢谢。不要为您的业务层创建*管理器或*服务类,而是尝试创建*处理程序,其中每个类只实现一个用例,如前所述。