asp.net-mvc – 从业务层使用邮件库
我有一个使用ASP.NET MVC3构建的网站,其分层如下:
> ProjectName.Shared(模型服务合同) 这实际上是我最近在重构之后想出的结构.不幸的是,UI和我的业务层之间没有完全分离,因此这个领域可能会使用更多的重构 – 我现在无法做到这一点,因为我的时间紧迫. 至于现在,我的客户已经请求了一些新功能,包括在发生某些事件后向用户发送电子邮件.网站目前发送电子邮件的方式是使用Postal库,这是迄今为止做得很好的.这发生在MVC Web应用程序中,这与我对新功能的情况不同… 问题: 我有这样的情况,我需要让我的业务层内的私人方法向用户发送电子邮件.我之所以无法在Action方法中执行此操作,是因为有许多代码路径最终会调用此私有方法.所以它并不是特定于一个Action方法. 建议的解决方案: 我的想法是创建一个EmailsController,我可以通过业务层内的HTTP-POST调用来调用它的方法.然后,我将传递通过Action方法的参数发送电子邮件所需的参数. 但我觉得这个解决方案有点瑕疵和黑客.所以我真的想听听一些关于如何解决这个问题的想法. 解决方法
你能不能将你的电子邮件逻辑包装在服务层或基础设施之后,或者从控制器调用它,并通过你的构造函数注入服务?
您对业务层执行相同操作.除非邮政对象需要继承asp.net的东西? namespace ProjectName.Infrastructure { public interface IEmailService { void SendEmail(string address,string content) { } } public class EmailService : IEmailService { private void SendEmail(string address,string content) { //...send email via Postal } } } public class ControllerA { private IEmailService emailService; public ControllerA() { emailService = new EmailService(); } public ActionResult SendEmail(ViewModel model) { emailService.SendEmail(model.address,model.content); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- WCF服务与ASP.NET Web Api
- asp.net – 使用Html.TextBox添加css类
- asp.net – DotNetOpenAuth.WebServerClient.XSRF-会话在回
- asp.net – 在Gridview中有条件地隐藏CommandField或Button
- kendo-ui – 剑道网格刷新(数据绑定两次)
- asp.net-mvc – 发生异常后不要刷新会话 – NHibernate
- asp.net-mvc – Application_Error已调用,但没有异常
- asp.net – 终止所有会话,然后是应用程序结束事件
- 取消选中时,ASP.NET CheckBox不会启动CheckedChanged事件
- asp.net-mvc – MVC企业领域 – 好还是坏?
- ASP.NET FormsAuthentication cookie值的内容是什
- Intranet ASP.NET网站的Windows身份验证和重新出
- 如何在ASP.Net Gridview中添加“确认删除”选项?
- asp.net – 如何从HTML 5多文件输入元素捕获上传
- asp.net – 您何时会在Web自定义控件上使用Web用
- asp.net-core – 如何配置ASP.Net TestHost以使用
- asp.net – 我的应用程序让我重定向到Account /
- iis – 是否需要serviceAutoStartProvider属性来
- 在ASP.NET应用程序中托管的WCF服务中使用Autofac
- asp-classic – 带参数的vbscript:getref