2012-06-21 20 views
0

我正在使用VS2010,C#开发我的ASP.NET Web应用程序,我动态地创建了一个页面(使用页面上的多个服务器端和HTML控件)。现在我要通过电子邮件发送我的页面,我应该将其内容作为HTML,我怎样才能拥有我的页面HTML?当然,我有一个DIV(runat = ....),其中包含应该发送的部分,我如何获得它的HTML内容? innerHTML给我不是字面错误,我有什么选择?我希望有我的DIV的最终呈现的内容在ASP.NET中查找DIV HTML

感谢

回答

3

您可以使用类似下面的渲染代码的Web表单控件:

var control = new Control(); 
StringBuilder b = new StringBuilder(); 
HtmlTextWriter writer = new HtmlTextWriter(new System.IO.StringWriter(b)); 
control.RenderControl(writer); 
return b.ToString(); 

注:也有呈现另一种方法整个页面可能比已经提出的要容易一些:

var writer = new StringWriter(); 
HttpContext.Current.Server.Execute(url, writer); 
string output = writer.GetStringBuilder().ToString(); 
+0

谢谢,我怎样才能呈现我的DIV的HTML? –

+1

以及如果你的div有一个'runat =“server”'标签,这意味着你可以在你的代码隐藏中访问它...所以只需用你的DIV代替我的代码中的'var control'对象 –

+0

我有下面的错误:类型'ImageButton'的控件'imgFa'必须放置在runat = server的表单标签中。 –

1

你可能想尝试简单地下载页面作为字符串使用WebClient

var wc = new WebClient(); 
string url = Request.Url.AbsoluteUri; // for the current page, otherwise set the URL 
string html = wc.DownloadString(url); 

不知道,如果你是知道的,但HTML电子邮件是一个棘手的问题(电子邮件客户端都像很糟糕的浏览器,您可以只使用基本的标记和CSS)。我建议查看HTML Email Boilerplate以获取关于此的一些提示和最佳实践。

+0

谢谢,那我怎么能有我的DIV内容? –