从.Net MVC View获取HTML而不实际在浏览器中呈现视图?

时间:2011-03-03 13:22:55

标签: asp.net-mvc

我的控制器中有一个ActionResult,我想发送一封HTML电子邮件,该电子邮件的正文由视图生成。我可以在传递模型时获取视图的结果并避免将其发送到浏览器,而不是在我的控制器中使用2个actionresults方法?

2 个答案:

答案 0 :(得分:8)

MvcMailer 是一个很棒的小项目,支持使用MVC视图生成电子邮件。它以NuGet包的形式提供。

为了呈现字符串而不是响应的视图,请使用此代码(relativePath指向您的视图文件):

        var content = string.Empty;
        var view = ViewEngines.Engines.FindView(ControllerContext, relativePath, null);
        using (var writer = new StringWriter())
        {
            var context = new ViewContext(ControllerContext, view.View, ViewData, TempData, writer);
            view.View.Render(context, writer);
            writer.Flush();
            content = writer.ToString();
        }

答案 1 :(得分:4)

查看开源Postal project它的可用视图NuGet。

  

Postal允许您使用常规MVC视图创建电子邮件。

Andrew Davey在mvcConf 2上使用Postal进行了Generating email with View Engines的演示

或者,this blog post向您展示了一种简单的方式。