我正在研究我的第一个真正的ASP.NET MVC项目,我注意到我一直在工作的控制器变得越来越大。这似乎违背了保持控制器薄的最佳做法。
我在保持业务逻辑不受控制器方面做得很好。我为此使用了一个单独的层。每个操作主要调用业务层中的方法,并根据模型状态是否有效来协调最终结果。
也就是说,控制器有很多动作方法。直观地说,我想将控制器分解为子控制器,但我没有看到一种简单的方法。我可以简单地将控制器分解为单独的控制器,但是我松散了层次结构,感觉有点脏。
是否有必要使用大量精简操作重构控制器?如果是这样,最好的方法是什么?
解决方法
首先,当您听到将控制器代码保持在最低限度时,这主要是指保持每个操作方法尽可能薄(将逻辑放入业务类中,而不是放入Views和viewmodel中。)看来你正在这样做,这很棒。
对于“太多”的动作方法,这是一个判断调用。它实际上可能是良好组织的标志,你将每个行动都集中在一件事上。另外,也许您正在使用专门用于RenderAction的操作?并且,您的解决方案的本质可能只是与Controller的主题有关的许多事情。
所以,我的猜测是你可能没事。但是,为了确保在便条纸上将控制器分成两个或三个控制器,并勾勒出您的故事如何从行动转变为行动。如果您发现您的工作流程适用于更多控制器,您应该将其分解。特别是如果您稍后要添加此功能。你越早打破就越好。