2

我有 ASP Web Api 的混合项目和类似于这个的 Angular 项目,我需要从其中的 ApiControllers 发送电子邮件。

我喜欢MvcMailer,我更喜欢使用它。我设法让它真正发送电子邮件。但是,我不确定如何将自定义数据传递给视图,因为我无权访问ViewBagViewData在 ApiController 上下文中。

任何帮助表示赞赏。

4

1 回答 1

1

我了解您无权访问 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 ...
    }
}

我知道这不是最佳的,但这就是我最终做的事情,而且效果很好。那会有帮助吗?

于 2014-04-05T19:13:54.607 回答