我制作了一个 ASP.NET 表,该表在运行时填充有标签、文字、数据、格式等。
form1.innerhtml 表示页面不仅有文字。
我需要将运行时生成的 ASP.NET 表提取为 HTML 代码,以便可以将其导出到 Word 文件..(因为 Word 很容易支持 HTML)并且浏览器也显示 HTML。
那么如何获取HTML呢?
您可以将控件呈现为字符串。
public string RenderControl(Control ctrl)
{
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctrl.RenderControl(hw);
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个完整的 .aspx 页面。 我所做的就是创建一个新网站,放入以下代码并按 F5。
using System;
using System.IO;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label lbl = new Label();
lbl.Text = "This is sample text";
lbl.ForeColor = System.Drawing.Color.Red;
string html = RenderControl(lbl);
Response.Clear();
Response.Write(HttpUtility.HtmlEncode(html));
Response.End();
}
public string RenderControl(Control ctrl)
{
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctrl.RenderControl(hw);
return sb.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
输出是
<span style="color:Red;">This is sample text</span>浏览器显示为 的内容<span style="color:Red;">This is sample text</span>。
请注意,您还可以消除 StringBuilder,使用new StringWriter();并返回tw.ToString();。无论如何,StringWriter 使用 StringBuilder 作为其底层数据结构。