在li标签内渲染PlaceHolder

时间:2014-09-17 16:14:02

标签: asp.net asp.net-placeholder

我有下一个情况:在一个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会引发错误,因为并非所有元素都可以转换为这些类型。

我有哪些替代方案?

谢谢

1 个答案:

答案 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)