1

我遇到了下一种情况:在 ITemplate 对象中,我正在渲染一个带有<li>内部元素的中继器,通常是这样完成的:

Dim literalControl as new LiteralControl
literalControl = "<li>blah blah</li>"
container.Controls.Add(literalControl)

但是在某一时刻,我需要添加一个由另一个函数返回的 PlaceHolder,该函数用于其他目的,不仅是这个中继器,而且我得到这样的东西:

Dim literalControl as new LiteralControl
Dim plTable As PlaceHolder

literalControl = "<li>blah blah</li>"
MyObject.Render(AComplexObect, plTable)

container.Controls.Add(literalControl)
container.Controls.Add(plTable)

这工作得很好,但占位符中的元素留 <li>标签之外,我想要它在里面。plTable内部有许多不同类型的元素,因此我循环将其内容转换为 Literal 或 LiteralControl 会引发错误,因为并非所有元素都可以转换为这些类型。

我有什么选择?

谢谢

4

1 回答 1

1

这对你有用吗:

Dim literalControl As New LiteralControl
Dim plTable As PlaceHolder
Dim swWriter As New StringWriter
Dim htwWriter As New HtmlTextWriter(swWriter)

MyObject.Render(AComplexObect, plTable)
MyObject.RenderControl(htwWriter)

literalControl.Text = "<li>" & swWriter.ToString() & "</li>"

container.Controls.Add(literalControl)
于 2014-09-17T20:03:12.987 回答