这个问题指出Literal vs Label虽然这个问题指出了Panel VS. PlaceHolder,但就在今天我与我的同事讨论使用 PlacHolder vs Literal 来添加生成的HTML标记在运行时。两个控件都不会产生任何额外的标记,但我们正在寻找正确的控件来动态添加生成的标记。 answer of this question建议使用两者来添加生成的标记,所以我想知道我们应该使用哪种控件/方法来添加生成的标记,而不是其他。
答案 0 :(得分:14)
不会渲染任何自己的标记(这可能是一件非常好的事情)。但是,Placeholder
可能包含子控件,而Literal
则不能。
相比之下,Placeholder
可以包含其他控件,但没有Text
属性。
我想知道我们应该使用哪种控制/方法来添加 生成标记,仅此而已。
如果由"生成"你的意思是最终结果是一个字符串,我会使用Literal
。如果要生成控制树,请将这些控件附加到Placeholder
。
或者,如果您想完全省略服务器控件的声明:
<h2>Hello World</h2>
<p>The following is generated markup.</p>
<%= base.GetGeneratedMarkup() %>
我相信仍会为此引发Literal
,但它允许您将生成的内容与页面/控件的标记部分混合(类似于Razor)。
答案 1 :(得分:6)
PlaceHolder vs Literal for adding HTML
主要的不同是Literal控件具有Text
属性(和Mode)也保存在Viewstate上,PlaceHolder
完全为空。
所以你可以使用一个Literal控件直接添加一些字符串html代码,你可以使用 PlaceHolder添加一些其他控件但不添加任何直接的html代码