我有 ASP Web Api 的混合项目和类似于这个的 Angular 项目,我需要从其中的 ApiControllers 发送电子邮件。
我喜欢MvcMailer,我更喜欢使用它。我设法让它真正发送电子邮件。但是,我不确定如何将自定义数据传递给视图,因为我无权访问ViewBag
或ViewData
在 ApiController 上下文中。
任何帮助表示赞赏。
我了解您无权访问 ViewBag/ViewData,这可能与您拥有 WebAPI 上下文(而不是 MVC)有关。但是你为什么不只是实例化邮件程序并传递参数呢?
[RoutePrefix("api/foo")]
public class FooController : ApiController
{
[HttpPost]
[Route("bar")]
public void Bar(string foo, string bar)
{
MyMailer myMailer = new MyMailer();
myMailer.MyAction(foo, bar).Send();
}
}
然后:
public class MyMailer : MailerBase, IMyMailer
{
public virtual MvcMailMessage MyAction(string foo, string bar)
{
ViewBag.Foo = foo;
ViewBag.Bar = bar;
// Populate ...
}
}
我知道这不是最佳的,但这就是我最终做的事情,而且效果很好。那会有帮助吗?