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