2011-03-03 36 views
3

我在我的控制器中有一个ActionResult,我想发送一封HTML邮件,该邮件的正文由一个视图生成。而不是在我的控制器中有2个actionresults方法,我可以在传递模型时获得视图的结果并避免将其发送到浏览器?从.Net MVC View获取HTML而不实际在浏览器中呈现视图?

+0

的[渲染视图,作为字符串](HTTP可能重复:// stackoverflow.com/questions/483091/render-a-view-as-a-string) – bzlm 2011-03-03 14:20:56

+0

我最终使用这个解决方案:http://persistall.com/archive/2007/12/21/asp.net-mvc- --renderview-testing-workaround.aspx – Slee 2011-03-03 14:24:52

回答

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(); 
     } 
+0

Api.ControllerContext是System.Web.Http.Controllers.HttpControllerContext和FindView需要System.Web.Mvc.ControllerContext ... – xster 2012-05-08 21:19:52

相关问题