使用Mvc Mailer从Web Api项目发送电子邮件,其中ViewBag不可用

时间:2014-03-29 09:17:03

标签: c# asp.net-web-api mvcmailer

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

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

感谢任何帮助。

1 个答案:

答案 0 :(得分: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 ...
    }
}

我知道这不是最佳的,但这就是我最终做的事情并且工作正常。那会有帮助吗?