【问题标题】:How to Email Screen in ASP.Net/MVC如何在 ASP.Net/MVC 中通过电子邮件发送屏幕
【发布时间】:2009-09-10 03:04:34
【问题描述】:

我有一个应用程序,它由 10 多个相关的 ascx 文件组成,我们使用 Html.RenderPartial 帮助器在用户浏览器上显示我们的数据。

我需要通过电子邮件发送与屏幕上重复的数据。我希望能够获得生成的 html 而无需进行屏幕抓取。

对于如何做到这一点有什么建议吗?我只是想避免重复工作。

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/ 有一个很好的解决方案,可以将视图呈现为字符串,以便您可以通过电子邮件发送。

    /// Static Method to render string - put somewhere of your choosing
    public static string RenderPartialToString(string controlName, object viewData)
    {
         ViewDataDictionary vd = new ViewDataDictionary(viewData);
         ViewPage vp = new ViewPage { ViewData = vd };
         Control control = vp.LoadControl(controlName);
    
         vp.Controls.Add(control);
    
         StringBuilder sb = new StringBuilder();
         using (StringWriter sw = new StringWriter(sb))
         {
             using (HtmlTextWriter tw = new HtmlTextWriter(sw))
             {
                 vp.RenderControl(tw);
             }
         }
    
         return sb.ToString();
    }
    

    【讨论】:

      【解决方案2】:

      在常规的 asp.net 中,您可以覆盖 Render() 并提供自己的 HtmlWriter 来拦截呈现的 html,然后再将其复制到传入的 HtmlWriter。

      我不知道你会如何在 MVC 中拦截它,但我相信你能够做到 - 特别是如果你在管道中创建一个新的 HttpModule 来预后处理输出流。

      【讨论】:

      • 这和我想的差不多。在常规的 asp.net 中并不难。 response.filter 上的文档为您提供了您所需要的一切,但同样,在 mvc 中不确定。另外,不知道您可以接受答案。仍然了解stackoverflow。但这是一个非常整洁的网站。谢谢
      猜你喜欢
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 2017-11-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多