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

Asp.net mvc 从.Net MVC视图中获取HTML而不在浏览器中实际呈现视图?,asp.net-mvc,Asp.net Mvc,我的控制器中有一个ActionResult,我想从中发送一封HTML电子邮件,该电子邮件的正文由视图生成。我的控制器中没有2个actionresults方法,我可以在传递模型时只获取视图的结果,并避免将其发送到浏览器吗?看看开源的它的可用视图NuGet Postal允许您使用常规MVC视图创建电子邮件 Andrew Davey在mvcConf 2上做了一个关于使用邮政的演示 或者向您展示一种简单的方法。是一个出色的小项目,支持使用MVC视图生成电子邮件。它以NuGet软件包的形式提供 要将视图呈

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

看看开源的它的可用视图NuGet

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

Andrew Davey在mvcConf 2上做了一个关于使用邮政的演示

或者向您展示一种简单的方法。

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

要将视图呈现为字符串而不是响应,请使用以下代码(
relativePath
指向视图文件):


我最终使用了这个解决方案:我相信MVC4还不支持PostalApi.ControllerContext是System.Web.Http.Controllers.HttpControllerContext,FindView需要System.Web.MVC.ControllerContext。。。
        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();
        }