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

Sle*_*lee 3 asp.net-mvc

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

Jak*_*cki 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();
        }
Run Code Online (Sandbox Code Playgroud)