在MVC网络应用程序中,我经常发送电子邮件。
我通常在控制器中执行此操作,因为我从控制器加载了所有视图(包括电子邮件视图)。
但是,现在,我有一些电子邮件从模型发送的代码。
通常从哪个层发送电子邮件?有关系吗? 需要是否一致?
答案 0 :(得分:16)
理想情况下,控制器应该像将视图连接到模型的运算符。这属于模型或服务层。
我认为只有当你有一个单独负责发送电子邮件的模型对象时,它才属于模型层。您不希望将表示和逻辑混合在一起,这是模型 - 视图 - 控制器中关注点分离的全部要点。
此类逻辑应位于服务层中。然后,您可以使用依赖注入将服务注入控制器并调用EmailSenderService.sendEmail();