如何获取 ASP.NET 控件的 HTML 代码,以便进一步使用该代码

use*_*745 1 c# asp.net

我制作了一个 ASP.NET 表,该表在运行时填充有标签、文字、数据、格式等。

form1.innerhtml 表示页面不仅有文字。

我需要将运行时生成的 ASP.NET 表提取为 HTML 代码,以便可以将其导出到 Word 文件..(因为 Word 很容易支持 HTML)并且浏览器也显示 HTML。

那么如何获取HTML呢?

Reb*_*off 5

您可以将控件呈现为字符串。

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)

输出是 &lt;span style=&quot;color:Red;&quot;&gt;This is sample text&lt;/span&gt;浏览器显示为 的内容<span style="color:Red;">This is sample text</span>

请注意,您还可以消除 StringBuilder,使用new StringWriter();并返回tw.ToString();。无论如何,StringWriter 使用 StringBuilder 作为其底层数据结构。