如何在ASP.Net/MVC中创建电子邮件屏幕
我有一个由10多个相关ascx文件组成的应用程序,我们使用它在用户浏览器上使用Html.RenderPartial helper显示数据 我需要通过电子邮件发送与屏幕上的内容重复的数据。我希望能够得到生成的html,而不必做屏幕刮如何在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中截取它,但我相信你能做到——特别是如果
对于如何做到这一点,有什么建议吗?我只是想避免复制工作。在常规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。但这是一个非常整洁的网站。谢谢