这个问题指出了文字vs标签,而这个问题指出了面板vs占位符,但就在今天,我和我的同事争论使用PlacHolder vs Literal添加在运行时生成的HTML标记。这两个控件都不产生任何额外的标记,但我们正在寻找合适的控件来动态地添加生成的标记。这个问题的答案建议使用这两种方法来添加生成的标记,所以我想知道我们应该使用哪种控制/方法来添加生成的标记,而不是更多。
都不呈现自己的任何标记(这可能是一件非常好的事情)。但是,Placeholder
可以包含子控件,而Literal
不能。
通过比较,Placeholder
可以包含其他控件,但不具有Text
属性。
我想知道我们应该使用哪种控制/方法来添加生成标记,仅此而已。
如果"生成"是指最终结果是字符串,我会使用Literal
。如果要生成控件树,则将这些控件附加到Placeholder
.
或者,如果您想完全省略服务器控件的声明:
<h2>Hello World</h2>
<p>The following is generated markup.</p>
<%= base.GetGeneratedMarkup() %>
我相信Literal
仍然是在这种情况下生成的,但它允许您将生成的内容与页面/控件的标记部分混合(类似于Razor)。
PlaceHolder vs Literal for adding HTML
主要的区别是文字控件有Text
属性(和模式),也保存在Viewstate上,PlaceHolder
是完全空的。
所以你可以使用一个文字控件直接添加一些字符串html代码,你可以使用占位符添加一些其他控件但不添加任何直接的html代码