ASP.NET 将原始 HTML 解析为控件

标签 asp.net

是否可以在 ASP.NET 中获取包含一些 HTML 的字符串并让 ASP.NET 解析它并为我创建一个控件?例如:

string rawHTML = "<table><td><td>Cell</td></tr></table>";
HTMLTable table = MagicClass.ParseTable(rawHTML);

我知道这是一件坏事,但不幸的是,这是我实现所需目标的唯一方法(因为我无法修改该特定同事的代码)。

此外,我知道 LiteralControl 允许您拥有一个包含任意 HTML 的控件,但遗憾的是我需要将它们转换为适当的控件。

不幸的是,HTMLTable 不支持 InnerHTML 属性。我需要按原样保留 HTML 树,所以我不能将它放入 <div> 中。标签。

谢谢。

最佳答案

我想你会得到的最接近的是 Page.ParseControl ,这是 ASP.NET 解析器。缺点是您拥有的文本一个 LiteralControl,因为它上面没有 runat="server"- 所以您需要事先进行一些非常小的字符串操作。

换句话说:

this.ParseControl("<table><tr><td>Cell</td></tr></table>")

将产生:

Control
 LiteralControl

鉴于:

this.ParseControl("<table runat=\"server\"><tr><td>Cell</td></tr></table>")

将产生:

Control
 HtmlTable
  HtmlTableRow
   HtmlTableCell
    LiteralControl

关于ASP.NET 将原始 HTML 解析为控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248437/

相关文章:

c# - 使用 ASP.NET 3.5 C# 将 iPhone 重定向到另一个 URL

asp.net - 停止从 IIS 7.5 中的父 ASP.NET 应用程序继承 web.config

c# - 如何根据 #var=test 变量更改图像的图像 url?

c# - 从 Javascript 在 PageMethod 中接收动态对象

asp.net - WCF POST 服务 500 内部服务器错误

javascript - 服务器和客户端点击不一起工作

c# - ASP.NET 模块依赖注入(inject)

c# - 在Asp.net中获取两次之间的小时数

c# - 在 ASP.NET 中用户关闭浏览器时,Session 会释放内存吗?

asp.net - 快速上传图像到服务器使用图像作为参数