Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.Net/MVC中创建电子邮件屏幕_Asp.net_Asp.net Mvc - Fatal编程技术网

如何在ASP.Net/MVC中创建电子邮件屏幕

如何在ASP.Net/MVC中创建电子邮件屏幕,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我有一个由10多个相关ascx文件组成的应用程序,我们使用它在用户浏览器上使用Html.RenderPartial helper显示数据 我需要通过电子邮件发送与屏幕上的内容重复的数据。我希望能够得到生成的html,而不必做屏幕刮 对于如何做到这一点,有什么建议吗?我只是想避免复制工作。在常规asp.net中,您可以覆盖Render()并提供自己的HtmlWriter来截获呈现的html,然后再将其复制到传入的HtmlWriter 我不知道你会如何在MVC中截取它,但我相信你能做到——特别是如果

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

我需要通过电子邮件发送与屏幕上的内容重复的数据。我希望能够得到生成的html,而不必做屏幕刮


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

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


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

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

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

有一个很好的解决方案,可以将视图呈现为字符串,这样你就可以通过电子邮件发送它

/// 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();
}
有一个很好的解决方案,可以将视图呈现为字符串,以便您可以通过电子邮件发送它

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

这与我的想法相似。在普通的asp.net中,这并不难。关于response.filter的文档为您提供了所需的一切,但在mvc中也不确定。另外,我不知道你可以接受回答。仍然在了解stackoverflow。但这是一个非常整洁的网站。谢谢这和我想的差不多。在普通的asp.net中,这并不难。关于response.filter的文档为您提供了所需的一切,但在mvc中也不确定。另外,我不知道你可以接受回答。仍然在了解stackoverflow。但这是一个非常整洁的网站。谢谢