我想我开始对 MVC 中控制器的工作感到困惑。
我有一个公开五个功能的服务:
- 列出队列中的包
- 获取包裹
- 删除包
- 接受包裹
- 拒绝包裹
我的 ASP.NET MVC 控制器依赖于该服务,并且通常可以对 Action 执行服务调用。到目前为止我很高兴。
然后第二部分是构建 ViewModel 结果。如果我在控制器内部执行此操作,控制器现在有一个爆炸性的依赖关系列表——添加的每个操作都会增加依赖关系以构建视图模型,这些都由控制器继承。我不太喜欢这个。我正在构建这个控制器,它依赖于 N 个不同的视图模型构建器,但每个请求只使用其中一个。
所以我想把所有这些都拉出来,并应用特定于每个视图模型的动作过滤器。我还没有这样做,但似乎还可以。
这对我提出的问题是:控制者的责任是什么?如果我最终将视图模型构建拉入过滤器,我的控制器所做的只是让路由执行服务调用(并提供过滤器插件)。如果我让我的控制器负责构建每个视图模型,它就会变得一团糟。
似乎我几乎想为每个请求实例化一个动作,而不是一个控制器,而我只是滥用过滤器来实现这一点?