我有下一个情况:在一个ITemplate对象中,我正在渲染一个里面有<li>
个元素的Repeater,通常它是这样做的:
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)
这很好用但是在placehoder中的元素保留在 <li>
标记之外,我希望它在里面。 plTable
里面有许多不同类型的元素,所以我将它的内容循环转换为Literal或LiteralControl会引发错误,因为并非所有元素都可以转换为这些类型。
我有哪些替代方案?
谢谢
答案 0 :(得分: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)