将字符串转换为WebControls – asp.net

如果您看到以下代码

Table tblTest = (Table)tblControl; StringBuilder text = new StringBuilder(); StringWriter writer = new StringWriter(text); HtmlTextWriter htmlWriter = new HtmlTextWriter(writer); tblTest.RenderControl(htmlWriter); htmlCode = text.ToString(); 

这里我将表对象转换为字符串。

我将输出为"

item

"

现在我想回滚它。 我有一个字符串,我需要将其转换为WebControls.Table对象。 请有人建议某种方式。

创建一个HtmlControl的名称映射到控件。 然后你可以获取发送给你的xml字符串并使用XDocument.Parse加载它。 从那里你可以递归地构建控制结构。

 Dictionary controlConstructor = new Dictionary { {"table", new HtmlTable()}, {"tr", new HtmlTableRow()}, {"td", new HtmlTableCell()} }; string xml = "
item
"; var htmlDoc = XElement.Parse(xml); Func constructHtmlStructure = null; constructHtmlStructure = e => { var control = controlConstructor[e.Name.ToString()]; if (e.HasElements) control.Controls.Add(constructHtmlStructure(e.Elements().Single())); else control.InnerText = e.Value; return control; }; var structure = constructHtmlStructure(htmlDoc);

是一个非常简单的开始。 获得所有控件都需要更复杂的东西。 请注意,它们具有TagName属性,您可以使用该属性捕获构建字典中的所有控件。