PlaceHolder vs Literal用于添加在运行时生成的HTML标记

时间:2013-03-10 15:22:08

标签: asp.net asp.net-controls asp.net-placeholder asp-literal

这个问题指出Literal vs Label虽然这个问题指出了Panel VS. PlaceHolder,但就在今天我与我的同事讨论使用 PlacHolder vs Literal 来添加生成的HTML标记在运行时。两个控件都不会产生任何额外的标记,但我们正在寻找正确的控件来动态添加生成的标记。 answer of this question建议使用两者来添加生成的标记,所以我想知道我们应该使用哪种控件/方法来添加生成的标记,而不是其他。

2 个答案:

答案 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代码